From 42906b7613943b7a0db4f8abda5ff878e8ca8402 Mon Sep 17 00:00:00 2001 From: Dynxsty Date: Sun, 24 Jul 2022 01:06:59 +0200 Subject: [PATCH 01/11] Introduction of the `/move-conversation` command --- .../MoveConversationCommand.java | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java diff --git a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java new file mode 100644 index 000000000..52733054d --- /dev/null +++ b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java @@ -0,0 +1,109 @@ +package net.javadiscord.javabot.systems.user_commands; + +import com.dynxsty.dih4jda.interactions.commands.SlashCommand; +import net.dv8tion.jda.api.Permission; +import net.dv8tion.jda.api.entities.ChannelType; +import net.dv8tion.jda.api.entities.GuildMessageChannel; +import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.entities.Message; +import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.interactions.commands.OptionMapping; +import net.dv8tion.jda.api.interactions.commands.OptionType; +import net.dv8tion.jda.api.interactions.commands.build.Commands; +import net.dv8tion.jda.api.interactions.commands.build.OptionData; +import net.dv8tion.jda.api.requests.restaction.MessageAction; +import net.javadiscord.javabot.Bot; +import net.javadiscord.javabot.data.config.guild.ModerationConfig; +import net.javadiscord.javabot.util.Responses; +import org.jetbrains.annotations.NotNull; + +import java.util.Collections; + +/** + *

This class represents the /move-conversation command.

+ */ +public class MoveConversationCommand extends SlashCommand { + private static final String MOVE_TO_MESSAGE = "``` ```\n\uD83D\uDCE4 %s has requested to move **this conversation** over to %s\n%s\n\n``` ```"; + private static final String MOVED_FROM_MESSAGE = "\uD83D\uDCE5 Conversation moved **here** from %s by %s\n%s"; + private static final Permission[] REQUIRED_PERMISSIONS = new Permission[]{ + Permission.MESSAGE_SEND, Permission.VIEW_CHANNEL + }; + + /** + * The constructor of this class, which sets the corresponding {@link net.dv8tion.jda.api.interactions.commands.build.SlashCommandData}. + */ + public MoveConversationCommand() { + setSlashCommandData(Commands.slash("move-conversation", "Allows to move the current conversation into another channel!") + .addOptions( + new OptionData(OptionType.CHANNEL, "channel", "Where should the current conversation be continued?", true) + .setChannelTypes(ChannelType.TEXT, ChannelType.GUILD_NEWS_THREAD, ChannelType.GUILD_PRIVATE_THREAD, ChannelType.GUILD_PUBLIC_THREAD, ChannelType.VOICE, ChannelType.STAGE) + ).setGuildOnly(true) + ); + } + + @Override + public void execute(@NotNull SlashCommandInteractionEvent event) { + OptionMapping channelMapping = event.getOption("channel"); + if (channelMapping == null) { + Responses.replyMissingArguments(event).queue(); + return; + } + if (event.getGuild() == null || event.getMember() == null) { + Responses.replyGuildOnly(event).queue(); + return; + } + GuildMessageChannel channel = channelMapping.getAsChannel().asGuildMessageChannel(); + if (event.getChannel().getIdLong() == channel.getIdLong()) { + Responses.warning(event, "Invalid Channel", "You cannot move the conversation to the same channel!").queue(); + return; + } + if (isInvalidChannel(event.getMember(), channel)) { + Responses.warning(event, "Invalid Channel", "You're not allowed to move the conversation to %s", channel.getAsMention()).queue(); + return; + } + event.deferReply(true).queue(); + sendMoveToChannelMessage(event, channel).queue(movedFrom -> + sendMovedFromChannelMessage(event, channel, movedFrom).queue(movedTo -> + editMoveToChannelMessage(event, movedFrom, movedTo).queue(s -> + event.getHook().sendMessage("Done!").queue() + ) + ) + ); + } + + /** + * Checks if the specified {@link Member} does have the required permissions in order + * to move the conversation to the specified channel. + * + * @param member The {@link Member} which executed the command. + * @param channel The {@link GuildMessageChannel} the conversation should be moved to. + * @return Whether the {@link GuildMessageChannel} provided by the {@link Member} is invalid. + */ + private boolean isInvalidChannel(@NotNull Member member, GuildMessageChannel channel) { + ModerationConfig config = Bot.config.get(member.getGuild()).getModerationConfig(); + return !member.hasPermission(channel, REQUIRED_PERMISSIONS) || + // check thread permissions + channel.getType().isThread() && !member.hasPermission(channel, Permission.MESSAGE_SEND_IN_THREADS) || + // check for suggestion channel check for share knowledge channel + channel.getIdLong() == config.getSuggestionChannelId() || channel.getIdLong() == config.getShareKnowledgeChannelId() || + // check for job channel check for application channel + channel.getIdLong() == config.getJobChannelId() || channel.getIdLong() == config.getApplicationChannelId() || + // check for log channel + channel.getIdLong() == config.getLogChannelId(); + } + + private @NotNull MessageAction sendMoveToChannelMessage(@NotNull SlashCommandInteractionEvent event, @NotNull GuildMessageChannel channel) { + return event.getChannel().sendMessageFormat(MOVE_TO_MESSAGE, event.getUser().getAsMention(), channel.getAsMention(), "Awaiting Link...") + .allowedMentions(Collections.emptySet()); + } + + private @NotNull MessageAction sendMovedFromChannelMessage(@NotNull SlashCommandInteractionEvent event, @NotNull GuildMessageChannel channel, @NotNull Message movedFrom) { + return channel.sendMessageFormat(MOVED_FROM_MESSAGE, event.getChannel().getAsMention(), event.getUser().getAsMention(), movedFrom.getJumpUrl()) + .allowedMentions(Collections.emptySet()); + } + + private @NotNull MessageAction editMoveToChannelMessage(@NotNull SlashCommandInteractionEvent event, @NotNull Message movedFrom, @NotNull Message movedTo) { + return movedFrom.editMessageFormat(MOVE_TO_MESSAGE, event.getUser().getAsMention(), movedTo.getChannel().getAsMention(), movedTo.getJumpUrl()) + .allowedMentions(Collections.emptySet()); + } +} From 8222561b7917bb531c01ad28eb0719fa11399e9b Mon Sep 17 00:00:00 2001 From: Dynxsty Date: Sun, 24 Jul 2022 01:11:19 +0200 Subject: [PATCH 02/11] Added spaces between constants --- .../javabot/systems/user_commands/MoveConversationCommand.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java index 52733054d..b9cc92f44 100644 --- a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java +++ b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java @@ -24,7 +24,9 @@ */ public class MoveConversationCommand extends SlashCommand { private static final String MOVE_TO_MESSAGE = "``` ```\n\uD83D\uDCE4 %s has requested to move **this conversation** over to %s\n%s\n\n``` ```"; + private static final String MOVED_FROM_MESSAGE = "\uD83D\uDCE5 Conversation moved **here** from %s by %s\n%s"; + private static final Permission[] REQUIRED_PERMISSIONS = new Permission[]{ Permission.MESSAGE_SEND, Permission.VIEW_CHANNEL }; From 88f2802690f01a31ca0b6db862e9c172bb17167e Mon Sep 17 00:00:00 2001 From: Dynxsty Date: Sun, 24 Jul 2022 01:12:29 +0200 Subject: [PATCH 03/11] Removed `MoveConversationCommand#REQUIRED_PERMISSIONS` --- .../systems/user_commands/MoveConversationCommand.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java index b9cc92f44..617445bac 100644 --- a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java +++ b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java @@ -27,10 +27,6 @@ public class MoveConversationCommand extends SlashCommand { private static final String MOVED_FROM_MESSAGE = "\uD83D\uDCE5 Conversation moved **here** from %s by %s\n%s"; - private static final Permission[] REQUIRED_PERMISSIONS = new Permission[]{ - Permission.MESSAGE_SEND, Permission.VIEW_CHANNEL - }; - /** * The constructor of this class, which sets the corresponding {@link net.dv8tion.jda.api.interactions.commands.build.SlashCommandData}. */ @@ -83,7 +79,7 @@ public void execute(@NotNull SlashCommandInteractionEvent event) { */ private boolean isInvalidChannel(@NotNull Member member, GuildMessageChannel channel) { ModerationConfig config = Bot.config.get(member.getGuild()).getModerationConfig(); - return !member.hasPermission(channel, REQUIRED_PERMISSIONS) || + return !member.hasPermission(channel, Permission.MESSAGE_SEND, Permission.VIEW_CHANNEL) || // check thread permissions channel.getType().isThread() && !member.hasPermission(channel, Permission.MESSAGE_SEND_IN_THREADS) || // check for suggestion channel check for share knowledge channel From 824ca9ab82173cf549bc1fe9e7d70703a24aebae Mon Sep 17 00:00:00 2001 From: Dynxsty Date: Sun, 24 Jul 2022 09:42:06 +0200 Subject: [PATCH 04/11] Made it more clear that this is only _suggesting_ to move the conversation --- .../javabot/systems/user_commands/MoveConversationCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java index 617445bac..af9760360 100644 --- a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java +++ b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java @@ -23,7 +23,7 @@ *

This class represents the /move-conversation command.

*/ public class MoveConversationCommand extends SlashCommand { - private static final String MOVE_TO_MESSAGE = "``` ```\n\uD83D\uDCE4 %s has requested to move **this conversation** over to %s\n%s\n\n``` ```"; + private static final String MOVE_TO_MESSAGE = "``` ```\n\uD83D\uDCE4 %s has suggested to move **this conversation** over to %s\n%s\n\n``` ```"; private static final String MOVED_FROM_MESSAGE = "\uD83D\uDCE5 Conversation moved **here** from %s by %s\n%s"; From 829dff94063a52bb89252268c733cccddb2b87c9 Mon Sep 17 00:00:00 2001 From: Dynxsty Date: Sun, 24 Jul 2022 09:50:01 +0200 Subject: [PATCH 05/11] Adjusted command description to better reflect that this is just a suggestion --- .../javabot/systems/user_commands/MoveConversationCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java index af9760360..d9ea6f196 100644 --- a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java +++ b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java @@ -31,7 +31,7 @@ public class MoveConversationCommand extends SlashCommand { * The constructor of this class, which sets the corresponding {@link net.dv8tion.jda.api.interactions.commands.build.SlashCommandData}. */ public MoveConversationCommand() { - setSlashCommandData(Commands.slash("move-conversation", "Allows to move the current conversation into another channel!") + setSlashCommandData(Commands.slash("move-conversation", "Suggest to move the current conversation into another channel!") .addOptions( new OptionData(OptionType.CHANNEL, "channel", "Where should the current conversation be continued?", true) .setChannelTypes(ChannelType.TEXT, ChannelType.GUILD_NEWS_THREAD, ChannelType.GUILD_PRIVATE_THREAD, ChannelType.GUILD_PUBLIC_THREAD, ChannelType.VOICE, ChannelType.STAGE) From f4f112a488390012f37a8841495fc411f67d67d9 Mon Sep 17 00:00:00 2001 From: Dynxsty Date: Sun, 24 Jul 2022 09:59:31 +0200 Subject: [PATCH 06/11] Moved the order the messages are sent to ensure that the message which gets sent to the current channel does not have to wait for the link --- .../user_commands/MoveConversationCommand.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java index d9ea6f196..5d4a70ff6 100644 --- a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java +++ b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java @@ -60,9 +60,9 @@ public void execute(@NotNull SlashCommandInteractionEvent event) { return; } event.deferReply(true).queue(); - sendMoveToChannelMessage(event, channel).queue(movedFrom -> - sendMovedFromChannelMessage(event, channel, movedFrom).queue(movedTo -> - editMoveToChannelMessage(event, movedFrom, movedTo).queue(s -> + sendMovedFromChannelMessage(event, channel).queue(movedTo -> + sendMoveToChannelMessage(event, channel, movedTo).queue(movedFrom -> + editMovedFromChannelMessage(event, movedFrom, movedTo).queue(s -> event.getHook().sendMessage("Done!").queue() ) ) @@ -90,18 +90,18 @@ private boolean isInvalidChannel(@NotNull Member member, GuildMessageChannel cha channel.getIdLong() == config.getLogChannelId(); } - private @NotNull MessageAction sendMoveToChannelMessage(@NotNull SlashCommandInteractionEvent event, @NotNull GuildMessageChannel channel) { - return event.getChannel().sendMessageFormat(MOVE_TO_MESSAGE, event.getUser().getAsMention(), channel.getAsMention(), "Awaiting Link...") + private @NotNull MessageAction sendMoveToChannelMessage(@NotNull SlashCommandInteractionEvent event, @NotNull GuildMessageChannel channel, @NotNull Message movedTo) { + return event.getChannel().sendMessageFormat(MOVE_TO_MESSAGE, event.getUser().getAsMention(), channel.getAsMention(), movedTo.getJumpUrl()) .allowedMentions(Collections.emptySet()); } - private @NotNull MessageAction sendMovedFromChannelMessage(@NotNull SlashCommandInteractionEvent event, @NotNull GuildMessageChannel channel, @NotNull Message movedFrom) { - return channel.sendMessageFormat(MOVED_FROM_MESSAGE, event.getChannel().getAsMention(), event.getUser().getAsMention(), movedFrom.getJumpUrl()) + private @NotNull MessageAction sendMovedFromChannelMessage(@NotNull SlashCommandInteractionEvent event, @NotNull GuildMessageChannel channel) { + return channel.sendMessageFormat(MOVED_FROM_MESSAGE, event.getChannel().getAsMention(), event.getUser().getAsMention(), "Waiting for Link...") .allowedMentions(Collections.emptySet()); } - private @NotNull MessageAction editMoveToChannelMessage(@NotNull SlashCommandInteractionEvent event, @NotNull Message movedFrom, @NotNull Message movedTo) { - return movedFrom.editMessageFormat(MOVE_TO_MESSAGE, event.getUser().getAsMention(), movedTo.getChannel().getAsMention(), movedTo.getJumpUrl()) + private @NotNull MessageAction editMovedFromChannelMessage(@NotNull SlashCommandInteractionEvent event, @NotNull Message movedFrom, @NotNull Message movedTo) { + return movedTo.editMessageFormat(MOVED_FROM_MESSAGE, event.getChannel().getAsMention(), event.getUser().getAsMention(), movedFrom.getJumpUrl()) .allowedMentions(Collections.emptySet()); } } From 8eeb0b84e72796e7d983e8edb4cbb76f17602585 Mon Sep 17 00:00:00 2001 From: Dynxsty Date: Sun, 24 Jul 2022 10:09:29 +0200 Subject: [PATCH 07/11] Added SelfMember Permission Checks & Error Consumer --- .../systems/user_commands/MoveConversationCommand.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java index 5d4a70ff6..eb08f8fb7 100644 --- a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java +++ b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java @@ -59,13 +59,17 @@ public void execute(@NotNull SlashCommandInteractionEvent event) { Responses.warning(event, "Invalid Channel", "You're not allowed to move the conversation to %s", channel.getAsMention()).queue(); return; } + if (isInvalidChannel(event.getGuild().getSelfMember(), channel)) { + Responses.error(event, "Insufficient Permissions", "I'm not allowed to sent messages to %s", channel.getAsMention()).queue(); + return; + } event.deferReply(true).queue(); sendMovedFromChannelMessage(event, channel).queue(movedTo -> sendMoveToChannelMessage(event, channel, movedTo).queue(movedFrom -> editMovedFromChannelMessage(event, movedFrom, movedTo).queue(s -> event.getHook().sendMessage("Done!").queue() ) - ) + ), err -> Responses.error(event, "Could not move conversation: " + err.getMessage()).queue() ); } @@ -73,7 +77,7 @@ public void execute(@NotNull SlashCommandInteractionEvent event) { * Checks if the specified {@link Member} does have the required permissions in order * to move the conversation to the specified channel. * - * @param member The {@link Member} which executed the command. + * @param member The {@link Member} to check for. * @param channel The {@link GuildMessageChannel} the conversation should be moved to. * @return Whether the {@link GuildMessageChannel} provided by the {@link Member} is invalid. */ From 4f98cc57c76662d5b83b531871d8b5f112b050d5 Mon Sep 17 00:00:00 2001 From: Dynxsty Date: Sun, 24 Jul 2022 10:35:13 +0200 Subject: [PATCH 08/11] Added Buttons --- .../javabot/systems/user_commands/MoveConversationCommand.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java index eb08f8fb7..7d1dffb2a 100644 --- a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java +++ b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java @@ -11,6 +11,7 @@ import net.dv8tion.jda.api.interactions.commands.OptionType; import net.dv8tion.jda.api.interactions.commands.build.Commands; import net.dv8tion.jda.api.interactions.commands.build.OptionData; +import net.dv8tion.jda.api.interactions.components.buttons.Button; import net.dv8tion.jda.api.requests.restaction.MessageAction; import net.javadiscord.javabot.Bot; import net.javadiscord.javabot.data.config.guild.ModerationConfig; @@ -96,6 +97,7 @@ private boolean isInvalidChannel(@NotNull Member member, GuildMessageChannel cha private @NotNull MessageAction sendMoveToChannelMessage(@NotNull SlashCommandInteractionEvent event, @NotNull GuildMessageChannel channel, @NotNull Message movedTo) { return event.getChannel().sendMessageFormat(MOVE_TO_MESSAGE, event.getUser().getAsMention(), channel.getAsMention(), movedTo.getJumpUrl()) + .setActionRow(Button.link(movedTo.getJumpUrl(), "Jump to Message")) .allowedMentions(Collections.emptySet()); } @@ -106,6 +108,7 @@ private boolean isInvalidChannel(@NotNull Member member, GuildMessageChannel cha private @NotNull MessageAction editMovedFromChannelMessage(@NotNull SlashCommandInteractionEvent event, @NotNull Message movedFrom, @NotNull Message movedTo) { return movedTo.editMessageFormat(MOVED_FROM_MESSAGE, event.getChannel().getAsMention(), event.getUser().getAsMention(), movedFrom.getJumpUrl()) + .setActionRow(Button.link(movedFrom.getJumpUrl(), "Jump to Message")) .allowedMentions(Collections.emptySet()); } } From 2d8c01df39c0339fb76afefd33547939b544f5b0 Mon Sep 17 00:00:00 2001 From: Dynxsty Date: Sun, 24 Jul 2022 10:37:32 +0200 Subject: [PATCH 09/11] Removed button from the "Move To" Message --- .../javabot/systems/user_commands/MoveConversationCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java index 7d1dffb2a..8353f3b5b 100644 --- a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java +++ b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java @@ -97,7 +97,6 @@ private boolean isInvalidChannel(@NotNull Member member, GuildMessageChannel cha private @NotNull MessageAction sendMoveToChannelMessage(@NotNull SlashCommandInteractionEvent event, @NotNull GuildMessageChannel channel, @NotNull Message movedTo) { return event.getChannel().sendMessageFormat(MOVE_TO_MESSAGE, event.getUser().getAsMention(), channel.getAsMention(), movedTo.getJumpUrl()) - .setActionRow(Button.link(movedTo.getJumpUrl(), "Jump to Message")) .allowedMentions(Collections.emptySet()); } From d30e1686ce1bb9f4f9cddf63e58c504b4f3a1eab Mon Sep 17 00:00:00 2001 From: Dynxsty Date: Sun, 24 Jul 2022 10:46:44 +0200 Subject: [PATCH 10/11] Added Credits to README.md --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index a2d016c80..529eab74f 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ To start up, run the bot once, and it will generate a `config` directory. Stop t Note that this is just what is required for the bot to start. Certain features may require other values to be set. # Configuration + The bot's configuration consists of a collection of simple JSON files: - `systems.json` contains global settings for the bot's core systems. - For every guild, a `{guildId}.json` file exists, which contains any guild-specific configuration settings. @@ -24,4 +25,12 @@ The bot's configuration consists of a collection of simple JSON files: At startup, the bot will initially start by loading just the global settings, and then when the Discord ready event is received, the bot will add configuration for each guild it's in, loading it from the matching JSON file, or creating a new file if needed. # Commands + _Work in Progress_ + +# Credits + +Inspiration we took from other communities: + +- We designed our [Help Channel System](https://github.com/Java-Discord/JavaBot/tree/main/src/main/java/net/javadiscord/javabot/systems/help) similar to the one on the [Python Discord](https://discord.gg/python). +- [`/move-conversation`](https://github.com/Java-Discord/JavaBot/blob/main/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java) is heavily inspired by the [Rust Programming Language Community Server](https://discord.gg/rust-lang-community) From c4009dbf92a4cca7d39125b84acf09a586507859 Mon Sep 17 00:00:00 2001 From: Dynxsty Date: Sun, 24 Jul 2022 11:06:22 +0200 Subject: [PATCH 11/11] Added check for slowmode --- .../systems/user_commands/MoveConversationCommand.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java index 8353f3b5b..dbdc5d549 100644 --- a/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java +++ b/src/main/java/net/javadiscord/javabot/systems/user_commands/MoveConversationCommand.java @@ -56,6 +56,10 @@ public void execute(@NotNull SlashCommandInteractionEvent event) { Responses.warning(event, "Invalid Channel", "You cannot move the conversation to the same channel!").queue(); return; } + if (channelMapping.getAsChannel().getType() == ChannelType.TEXT && channelMapping.getAsChannel().asTextChannel().getSlowmode() > 0) { + Responses.warning(event, "Invalid Channel", "You cannot move the conversation to a channel that has slowmode enabled!").queue(); + return; + } if (isInvalidChannel(event.getMember(), channel)) { Responses.warning(event, "Invalid Channel", "You're not allowed to move the conversation to %s", channel.getAsMention()).queue(); return;