public async Task HandleNotificationAsync( MessageReceivedNotification notification, CancellationToken cancellationToken) { using var statsScope = _dogStatsd.StartTimer("message_processing_ms"); var message = notification.Message; var channel = notification.Message.Channel; var guild = (channel as IGuildChannel)?.Guild; using var logScope = MessageLogMessages.BeginMessageNotificationScope(_logger, guild?.Id, message.Id, channel.Id); MessageLogMessages.MessageReceivedHandling(_logger); await TryTrackMessageAsync( guild, notification.Message, async (guildId) => { MessageLogMessages.MessageRecordCreating(_logger); await _messageRepository.CreateAsync(new MessageCreationData() { Id = message.Id, GuildId = guildId, ChannelId = channel.Id, AuthorId = message.Author.Id, Timestamp = message.Timestamp }); MessageLogMessages.MessageRecordCreated(_logger); }, cancellationToken); MessageLogMessages.MessageReceivedHandled(_logger); }
public async Task HandleNotificationAsync( MessageDeletedNotification notification, CancellationToken cancellationToken) { var message = notification.Message.HasValue ? notification.Message.Value : null; var channel = notification.Channel; var guild = (channel as IGuildChannel)?.Guild; using var logScope = MessageLogMessages.BeginMessageNotificationScope(_logger, guild?.Id, notification.Message.Id, channel.Id); MessageLogMessages.MessageDeletedHandling(_logger); await TryTrackMessageAsync( guild, message, async (_) => { MessageLogMessages.MessageRecordDeleting(_logger); await _messageRepository.DeleteAsync(notification.Message.Id); MessageLogMessages.MessageRecordDeleted(_logger); }, cancellationToken); MessageLogMessages.MessageDeletedHandled(_logger); }
private async Task TryTrackMessageAsync( IGuild?guild, IMessage?message, Func <ulong, Task> asyncTrackAction, CancellationToken cancellationToken) { if (guild is null) { MessageLogMessages.IgnoringNonGuildMessage(_logger); return; } if (message is { })