Ejemplo n.º 1
0
        public async Task HandleNotificationAsync(IMessageDelete notification, CancellationToken ct)
        {
            var message   = notification;
            var channelId = notification.ChannelID;
            var guild     = notification.GuildID;

            var isThreadChannel = await _threadService.IsThreadChannelAsync(channelId, ct);

            if (!isThreadChannel)
            {
                return;
            }

            using var logScope = MessageLogMessages.BeginMessageNotificationScope(_logger, guild.Value.Value, channelId.Value, notification.ID.Value);

            MessageLogMessages.MessageDeletedHandling(_logger);

            await TryTrackMessageAsync(
                guild,
                null,
                async (_) =>
            {
                MessageLogMessages.MessageRecordDeleting(_logger);
                await _messageRepository.DeleteAsync(notification.ID.Value);
                MessageLogMessages.MessageRecordDeleted(_logger);
            });

            MessageLogMessages.MessageDeletedHandled(_logger);
        }
        /// <inheritdoc/>
        public Task <Result> RespondAsync(IMessageDelete gatewayEvent, CancellationToken ct = default)
        {
            var key = KeyHelpers.CreateMessageCacheKey(gatewayEvent.ChannelID, gatewayEvent.ID);

            _cacheService.Evict(key);

            return(Task.FromResult(Result.FromSuccess()));
        }
    /// <inheritdoc />
    public async Task <Result> RespondAsync(IMessageDelete gatewayEvent, CancellationToken ct = default)
    {
        var messageKey = KeyHelpers.CreateMessageCacheKey(gatewayEvent.ChannelID, gatewayEvent.ID);

        if (!_cache.TryGetValue(messageKey, out IMessage message))
        {
            return(Result.FromSuccess());
        }

        if (!gatewayEvent.GuildID.IsDefined(out var guildID))
        {
            return(Result.FromSuccess());
        }

        return(await _channelLogging.NotifyMessageDeletedAsync(message, guildID));
    }
Ejemplo n.º 4
0
 internal MessageManager()
 {
     messageHandler = new MessageHandler();
     messageSender  = new MessageSender();
     messageDelete  = new MessageDelete();
 }
Ejemplo n.º 5
0
        public async Task <Result> RespondAsync(IMessageDelete gatewayEvent, CancellationToken ct = default)
        {
            await HandleNotificationAsync(gatewayEvent, ct);

            return(Result.FromSuccess());
        }