Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
        }