diff --git a/src/main/java/de/presti/ree6/commands/CommandManager.java b/src/main/java/de/presti/ree6/commands/CommandManager.java index 646bf82db..d46f32259 100644 --- a/src/main/java/de/presti/ree6/commands/CommandManager.java +++ b/src/main/java/de/presti/ree6/commands/CommandManager.java @@ -36,6 +36,7 @@ import net.dv8tion.jda.api.interactions.commands.build.SubcommandData; import net.dv8tion.jda.api.interactions.commands.build.SubcommandGroupData; import net.dv8tion.jda.api.requests.restaction.CommandListUpdateAction; +import net.dv8tion.jda.api.sharding.ShardManager; import net.dv8tion.jda.api.utils.data.DataObject; import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder; import net.dv8tion.jda.api.utils.messages.MessageCreateData; @@ -185,6 +186,17 @@ private String convertOptionsToString(List list) { return stringBuilder.toString(); } + /** + * Method used to add all Commands as SlashCommand on Discord. + * + * @param shardManager the Shard manager. + */ + public void addSlashCommand(ShardManager shardManager) { + for (JDA jda : shardManager.getShards()){ + addSlashCommand(jda); + } + } + /** * Method used to add all Commands as SlashCommand on Discord. * diff --git a/src/main/java/de/presti/ree6/commands/impl/info/Help.java b/src/main/java/de/presti/ree6/commands/impl/info/Help.java index b5da63ece..6eea93edf 100644 --- a/src/main/java/de/presti/ree6/commands/impl/info/Help.java +++ b/src/main/java/de/presti/ree6/commands/impl/info/Help.java @@ -7,6 +7,7 @@ import de.presti.ree6.commands.interfaces.ICommand; import de.presti.ree6.main.Main; import de.presti.ree6.sql.SQLSession; +import de.presti.ree6.utils.data.RegExUtil; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.emoji.Emoji; import net.dv8tion.jda.api.interactions.commands.OptionMapping; @@ -97,11 +98,13 @@ public void sendHelpInformation(String categoryString, CommandEvent commandEvent SQLSession.getSqlConnector().getSqlWorker().getSetting(commandEvent.getGuild().getIdLong(), "chatprefix").subscribe(setting -> { for (ICommand cmd : Main.getInstance().getCommandManager().getCommands().stream().filter(command -> command.getClass().getAnnotation(Command.class).category() == category).toList()) { + Command commandAnnotation = cmd.getClass().getAnnotation(Command.class); + boolean isValidDescription = commandAnnotation.description().matches(RegExUtil.ALLOWED_LANGUAGE_PATHS); end.append("``") .append(setting.get().getStringValue()) - .append(cmd.getClass().getAnnotation(Command.class).name()) + .append(commandAnnotation.name()) .append("``\n") - .append(commandEvent.getResource(cmd.getClass().getAnnotation(Command.class).description())) + .append(isValidDescription ? commandEvent.getResource(commandAnnotation.description()) : commandAnnotation.description()) .append("\n\n"); } diff --git a/src/main/java/de/presti/ree6/main/Main.java b/src/main/java/de/presti/ree6/main/Main.java index ed5d1ec5e..dcabc2341 100644 --- a/src/main/java/de/presti/ree6/main/Main.java +++ b/src/main/java/de/presti/ree6/main/Main.java @@ -381,11 +381,13 @@ public static void main(String[] args) { log.info("Starting all Plugins."); getInstance().getPluginManager().startPlugins(); + boolean shouldUpdateCommands = false; log.info("Registering all Commands of plugins."); for (PluginWrapper plugin : getInstance().getPluginManager().getPlugins()) { if (plugin.getPluginState() != PluginState.STARTED) continue; List commands = getInstance().getPluginManager().getExtensions(ICommand.class, plugin.getPluginId()); log.info("Found {} commands in {}.", commands.size(), plugin.getPluginId()); + if (!shouldUpdateCommands && !commands.isEmpty()) shouldUpdateCommands = true; commands.forEach(command -> { try { getInstance().getCommandManager().addCommand(command); @@ -394,6 +396,11 @@ public static void main(String[] args) { } }); } + + if (shouldUpdateCommands) { + getInstance().getCommandManager().addSlashCommand(BotWorker.getShardManager()); + log.info("Readding SlashCommands because of Plugin commands."); + } } // Create checker Thread.