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(); public async Task 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 HandleKickAsync( IGuildMemberRemove evt, AuditLogCache.ActionData kickData ) { return Result.Success; } private async Task HandleBanAsync( IGuildMemberRemove evt, AuditLogCache.ActionData banData ) { return Result.Success; } }