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