From 70d0f179ccd0851700e510d2ce9f57a8db64a70d Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Sat, 2 Aug 2025 11:34:41 +0200 Subject: [PATCH] Fix stuff in DiscordBot --- .../velocitycore/discord/DiscordBot.java | 49 ++++++------------- 1 file changed, 16 insertions(+), 33 deletions(-) diff --git a/VelocityCore/src/de/steamwar/velocitycore/discord/DiscordBot.java b/VelocityCore/src/de/steamwar/velocitycore/discord/DiscordBot.java index 53714c52..68d5d316 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/discord/DiscordBot.java +++ b/VelocityCore/src/de/steamwar/velocitycore/discord/DiscordBot.java @@ -41,7 +41,6 @@ import net.dv8tion.jda.api.entities.Role; import net.dv8tion.jda.api.entities.emoji.Emoji; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.exceptions.ErrorResponseException; -import net.dv8tion.jda.api.interactions.commands.Command; import net.dv8tion.jda.api.interactions.commands.OptionType; import net.dv8tion.jda.api.interactions.commands.build.CommandData; import net.dv8tion.jda.api.interactions.commands.build.Commands; @@ -49,13 +48,14 @@ import net.dv8tion.jda.api.interactions.commands.build.OptionData; import net.dv8tion.jda.api.interactions.components.ActionRow; import net.dv8tion.jda.api.interactions.components.buttons.Button; import net.dv8tion.jda.api.requests.GatewayIntent; -import net.dv8tion.jda.api.requests.restaction.CommandListUpdateAction; import net.dv8tion.jda.api.utils.MemberCachePolicy; import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder; import java.awt.*; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @@ -67,9 +67,10 @@ public class DiscordBot { @Getter private static final Map commands = new HashMap<>(); + private final OptionData commandArgument = new OptionData(OptionType.STRING, ARGUMENT_NAME, "Command arguments", false); public static void withBot(Consumer consumer) { - if(instance != null) + if (instance != null) consumer.accept(instance); } @@ -141,7 +142,7 @@ public class DiscordBot { ActionRow.of(Button.link("https://steamwar.de", "Website"), Button.link("https://steamwar.de/youtube", "YouTube")), ActionRow.of(Button.primary("auth", Emoji.fromUnicode("U+2705")).withLabel("Minecraft verknüpfen")) ), event -> { - if(event.getComponentId().equals("auth")) + if (event.getComponentId().equals("auth")) event.reply("Gebe innerhalb der nächsten 10 Minuten ``/verify " + AuthManager.createDiscordAuthToken(event.getUser()) + "`` auf dem Minecraft Server ein").setEphemeral(true).queue(); }); List actionRows = new ArrayList<>(); @@ -202,42 +203,24 @@ public class DiscordBot { vacationCommand ); - commandSetup(jda.retrieveCommands().complete(), jda.updateCommands()); + jda.updateCommands() + .addCommands(commands.keySet() + .stream() + .filter(command -> command.matches("^[\\w-]+$")) + .map(command -> Commands.slash(command, command).addOptions(commandArgument)) + .toArray(CommandData[]::new)) + .queue(); + jda.getGuildById(690530484920385586L).updateCommands().queue(); jda.getGuildById(1241489896909180998L) .upsertCommand(vacationCommand.COMMAND) .queue(); } - private final OptionData commandArgument = new OptionData(OptionType.STRING, ARGUMENT_NAME, "Command arguments", false); - private void commandSetup(List existing, CommandListUpdateAction updateCommands) { - Set correctCommands = new HashSet<>(); - for(Command command : existing) { - if(!commands.containsKey(command.getName())) { - command.delete().complete(); - continue; - } - - List options = command.getOptions(); - if(options.size() != 1 || options.get(0).getType() != OptionType.STRING) - command.editCommand().clearOptions().addOptions(commandArgument).complete(); - - correctCommands.add(command.getName()); - } - - updateCommands - .addCommands(commands - .keySet().stream() - .filter(command -> !correctCommands.contains(command)) - .filter(command -> command.matches("^[\\w-]+$")) - .map(command -> Commands.slash(command, command).addOptions(commandArgument)) - .toArray(CommandData[]::new)) - .queue(); - } - private boolean activityToggle = false; + private void activity() { - if(activityToggle) { + if (activityToggle) { Event event = Event.get(); jda.getPresence().setActivity(event != null ? Activity.competing("dem Event " + event.getEventName()) : Activity.playing("auf SteamWar.de")); } else {