/// <summary> /// Delete emote from reaction if it exists /// Do not save emote if it does not belong to guild /// </summary> /// <param name="todoReaction"></param> /// <returns></returns> public async Task <bool> RemoveEmoteReaction(ReactionCommandPayload todoReaction) { try { var emoji = todoReaction.Emoji; var guild = todoReaction.Guild; var message = todoReaction.Message; var username = todoReaction.User.Username; var userId = todoReaction.User.Id; _logger.LogDebug($"Remove reaction: {username} -> {emoji.Name}"); if (!IsValidEmote(emoji, guild)) { _logger.LogDebug($"{emoji.Name} is not valid"); return(true); } var emoteEntity = _emoteBuilder.BuildFromUserReaction(message, emoji, userId, guild.Id); _logger.LogDebug($"Removing reaction emote {emoteEntity}"); await _kattbotRepo.RemoveEmoteEntity(emoteEntity); return(true); } catch (Exception ex) { _logger.LogError(ex, "RemoveEmoteReaction"); return(false); } }
private async Task OnMessageReactionAdded(DiscordClient client, MessageReactionAddEventArgs eventArgs) { try { var channel = eventArgs.Channel; var emoji = eventArgs.Emoji; var message = eventArgs.Message; var guild = eventArgs.Guild; var user = eventArgs.User; if (IsPrivateMessageChannel(channel)) { return; } if (!IsRelevantReaction(user)) { return; } var todoReaction = new ReactionCommandPayload(message, emoji, user, guild); var command = new CreateReactionCommand(todoReaction); _emoteCommandQueue.Enqueue(command); } catch (Exception ex) { _logger.LogError(ex, nameof(OnMessageReactionAdded)); var eventContextError = new EventErrorContext() { EventName = nameof(OnMessageReactionAdded), User = eventArgs.User, Channel = eventArgs.Channel, Guild = eventArgs.Guild }; await _discordErrorLogger.LogDiscordError(eventContextError, ex.ToString()); } }
public async Task <bool> DeleteReaction(ReactionCommandPayload todoReaction) { return(await _emoteMessageService.RemoveEmoteReaction(todoReaction)); }
public DeleteReactionCommand(ReactionCommandPayload todoReaction) { _todoReaction = todoReaction; }
public CreateReactionCommand(ReactionCommandPayload todoReaction) { _todoReaction = todoReaction; }