public async Task CheckReactionMessage(CommandContext ctx, string messageToUse) { if (!await CommandHelpers.CheckPermissions(ctx, RequiredPermissions)) { return; } DiscordMessage message = await CommandHelpers.GetMessageFromUrl(ctx, messageToUse); if (message is null) { return; } ReactionMessage associatedReactionMessage = _reactionInteractions.ReactionMessages.FirstOrDefault(x => x.Message.Equals(message)); if (associatedReactionMessage == null) { await ctx.RespondAsync("Couldn't find the ReactionMessage associated with this Discord message"); return; } await ctx.TriggerTypingAsync(); await _reactionInteractions.CheckAllRules(associatedReactionMessage); await ctx.RespondAsync("Done"); }
public async Task EditReactionMessage(CommandContext ctx, string messageUrl) { if (!await CommandHelpers.CheckPermissions(ctx, RequiredPermissions)) { return; } SetupState state = _setupStates[ctx.Guild.Id]; if (state.IsInSetupMode || state.IsInEditMode) { await ctx.RespondAsync( "The bot is already setting up / editing a reaction message, finish it then try again"); return; } DiscordMessage message = await CommandHelpers.GetMessageFromUrl(ctx, messageUrl); if (message is null) { return; } ReactionMessage associatedMessage = _reactionInteractions.ReactionMessages.FirstOrDefault(x => x.Message.Equals(message)); if (associatedMessage == null) { await ctx.RespondAsync("This message doesn't have reaction interactions setup"); return; } state.ReactionMessage.Message = associatedMessage.Message; foreach (KeyValuePair <DiscordEmoji, DiscordRole> rule in associatedMessage.Rules) { state.ReactionMessage.Rules.Add(rule.Key, rule.Value); } state.OriginalReactionMessage = associatedMessage; await ctx.RespondAsync($"Got the message to edit, continue the edit with {ctx.Prefix}{CommandNames.AddEmojiToReactionMessage} (emoji) (mention to role)\nPreview the rules with {ctx.Prefix}{CommandNames.PreviewReactionMessage}"); state.IsInEditMode = true; }
public async Task RemoveReactionMessage(CommandContext ctx, string messageToUse) { if (!await CommandHelpers.CheckPermissions(ctx, RequiredPermissions)) { return; } DiscordMessage message = await CommandHelpers.GetMessageFromUrl(ctx, messageToUse); if (message is null) { return; } ReactionMessage associatedReactionMessage = _reactionInteractions.ReactionMessages.FirstOrDefault(x => x.Message.Equals(message)); if (associatedReactionMessage == null) { await ctx.RespondAsync("Couldn't find the ReactionMessage associated with this Discord message"); return; } _reactionInteractions.ReactionMessages.Remove(associatedReactionMessage); await ctx.RespondAsync("Succesfully removed the corresponding ReactionMessage"); _reactionInteractions.SaveToFile(); foreach (KeyValuePair <DiscordEmoji, DiscordRole> rule in associatedReactionMessage.Rules) { try { await associatedReactionMessage.Message.DeleteOwnReactionAsync(rule.Key); } catch { } } }
public async Task StartSetup(CommandContext ctx, string messageUrl) { if (!await CommandHelpers.CheckPermissions(ctx, RequiredPermissions)) { return; } SetupState state = _setupStates[ctx.Guild.Id]; if (state.IsInSetupMode || state.IsInEditMode) { await ctx.RespondAsync( "The bot is already setting up / editing a reaction message, finish the previous one and try again"); return; } DiscordMessage message = await CommandHelpers.GetMessageFromUrl(ctx, messageUrl); if (message is null) { return; } if (_reactionInteractions.ReactionMessages.FirstOrDefault(x => x.Message.Equals(message)) != null) { await ctx.RespondAsync("This message already got reaction interactions setup"); return; } state.ReactionMessage.Message = message; await ctx.RespondAsync($"Got the message to use, continue the setup with {ctx.Prefix}{CommandNames.AddEmojiToReactionMessage} (emoji) (mention to role)\nPreview the rules with {ctx.Prefix}{CommandNames.PreviewReactionMessage}"); state.IsInSetupMode = true; }