Catalogger.NET/Catalogger.Backend/Services/AuditLogEnrichedResponderService.cs
2024-10-09 17:35:11 +02:00

46 lines
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;
}
}