public async Task ProcessAsync(Cacheable <IMessage, ulong> message, ISocketMessageChannel channel) { var deletedMessage = message.Value; if (!message.HasValue) { deletedMessage = MessageCache.TryRemove(message.Id); } if (deletedMessage != null) { await ProcessWithCacheRecordAsync(deletedMessage, channel).ConfigureAwait(false); } else { await ProcessWithoutCacheRecordAsync(message.Id, channel).ConfigureAwait(false); } if (MessageCache.Exists(message.Id)) { MessageCache.TryRemove(message.Id); } await MessageCache.AppendAroundAsync(channel, message.Id, 100); }
public async Task LogMessageDeletedAsync(Cacheable <IMessage, ulong> message, ISocketMessageChannel channel, SocketGuild guild) { var deletedMessage = message.HasValue ? message.Value : MessageCache.TryRemove(message.Id); var entity = new AuditLogItem() { Type = AuditLogType.MessageDeleted, CreatedAt = DateTime.Now, GuildIdSnowflake = guild.Id, }; if (deletedMessage == null) { entity.SetData(MessageDeletedAuditData.Create(channel)); } else { await ProcessMessageDeletedWithCacheAsync(entity, channel, deletedMessage, guild); } if (MessageCache.Exists(message.Id)) { MessageCache.TryRemove(message.Id); } await MessageCache.AppendAroundAsync(channel, message.Id, 100); await GrillBotRepository.AddAsync(entity); await GrillBotRepository.CommitAsync(); }