37 lines
No EOL
1.3 KiB
C#
37 lines
No EOL
1.3 KiB
C#
using Catalogger.Backend.Cache.InMemoryCache;
|
|
using Remora.Discord.API.Abstractions.Gateway.Events;
|
|
using Remora.Results;
|
|
|
|
namespace Catalogger.Backend.Services;
|
|
|
|
public class AuditLogEnrichedResponderService(AuditLogCache auditLogCache, ILogger logger)
|
|
{
|
|
private readonly ILogger _logger = logger.ForContext<AuditLogEnrichedResponderService>();
|
|
|
|
public async Task<Result> RespondAsync(IGuildMemberRemove evt)
|
|
{
|
|
// give a second or so for the audit log to catch up
|
|
await Task.Delay(1000);
|
|
|
|
if (auditLogCache.TryGetKick(evt.GuildID, evt.User.ID, out var kickData))
|
|
return await HandleKickAsync(evt, kickData);
|
|
|
|
if (auditLogCache.TryGetBan(evt.GuildID, evt.User.ID, out var banData))
|
|
return await HandleBanAsync(evt, banData);
|
|
|
|
_logger.Debug("Guild member remove event for guild {GuildId}/user {UserId} didn't match an audit log entry",
|
|
evt.GuildID, evt.User.ID);
|
|
|
|
return Result.Success;
|
|
}
|
|
|
|
private async Task<Result> HandleKickAsync(IGuildMemberRemove evt, AuditLogCache.ActionData kickData)
|
|
{
|
|
return Result.Success;
|
|
}
|
|
|
|
private async Task<Result> HandleBanAsync(IGuildMemberRemove evt, AuditLogCache.ActionData banData)
|
|
{
|
|
return Result.Success;
|
|
}
|
|
} |