private async Task OnMessageUpdated(DiscordClient client, MessageUpdateEventArgs eventArgs) { try { var message = eventArgs.Message; var channel = eventArgs.Channel; var guild = eventArgs.Guild; if (message == null) { throw new Exception($"{nameof(eventArgs.Message)} is null"); } // issues caused by Threads feature if (message.Author == null) { return; } if (!IsReleventMessage(message)) { return; } if (IsPrivateMessageChannel(channel)) { return; } var todoMessage = new MessageCommandPayload(message, guild); var command = new UpdateMessageCommand(todoMessage); _emoteCommandQueue.Enqueue(command); } catch (Exception ex) { _logger.LogError(ex, nameof(OnMessageUpdated)); var eventContextError = new EventErrorContext() { EventName = nameof(OnMessageUpdated), User = eventArgs.Author, Channel = eventArgs.Channel, Guild = eventArgs.Guild, Message = eventArgs.Message }; await _discordErrorLogger.LogDiscordError(eventContextError, ex.ToString()); } }
/// <summary> /// Delete all messsage emotes for this message /// Extract emotes from message text /// If message contains emotes, save each emote /// Do save emote if it does not belong to guild /// </summary> /// <param name="todoMessage"></param> /// <returns></returns> public async Task <bool> UpdateEmoteMessage(MessageCommandPayload todoMessage) { try { var message = todoMessage.Message; var guild = todoMessage.Guild; var messageId = message.Id; var messageContent = message.Content; var username = message.Author.Username; _logger.LogDebug($"Update emote message: {username} -> {messageContent}"); var guildId = guild.Id; await _kattbotRepo.RemoveEmotesForMessage(messageId); var emotes = _emoteBuilder.BuildFromSocketUserMessage(message, guildId); if (emotes.Count > 0) { _logger.LogDebug($"Message contains {emotes.Count} emotes", emotes); foreach (var emote in emotes) { if (!IsValidEmote(emote, guild)) { _logger.LogDebug($"{emote} is not valid"); continue; } _logger.LogDebug($"Saving message emote {emote}"); await _kattbotRepo.CreateEmoteEntity(emote); } } else { _logger.LogDebug("Message contains no emotes"); } return(true); } catch (Exception ex) { _logger.LogError(ex, "UpdateEmoteMessage"); return(false); } }
private async Task OnMessageCreated(DiscordClient client, MessageCreateEventArgs eventArgs) { try { var message = eventArgs.Message; var guild = eventArgs.Guild; if (MessageIsCommand(message.Content)) { return; } if (!IsReleventMessage(message)) { return; } if (IsPrivateMessageChannel(message.Channel)) { await message.Channel.SendMessageAsync("https://cdn.discordapp.com/emojis/740563346599968900.png?v=1"); return; } var todoMessage = new MessageCommandPayload(message, guild); var command = new CreateMessageCommand(todoMessage); _emoteCommandQueue.Enqueue(command); } catch (Exception ex) { _logger.LogError(ex, nameof(OnMessageCreated)); var eventContextError = new EventErrorContext() { EventName = nameof(OnMessageCreated), User = eventArgs.Author, Channel = eventArgs.Channel, Guild = eventArgs.Guild, Message = eventArgs.Message }; await _discordErrorLogger.LogDiscordError(eventContextError, ex.ToString()); } }
public async Task <bool> UpdateMessage(MessageCommandPayload todoMessage) { return(await _emoteMessageService.UpdateEmoteMessage(todoMessage)); }
public CreateMessageCommand(MessageCommandPayload todoMessage) { _todoMessage = todoMessage; }