Catalogger.NET/Catalogger.Backend/Services/AuditLogEnrichedResponderService.cs

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