Beispiel #1
0
        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");
        }
Beispiel #2
0
        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;
        }
Beispiel #3
0
        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 { }
            }
        }
Beispiel #4
0
        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;
        }