From 203498de68e4618926e32c39dd4b8cb4bfe5d541 Mon Sep 17 00:00:00 2001 From: tueem Date: Sun, 16 Mar 2025 17:07:14 +0100 Subject: [PATCH] refactor(javacord): implement CommandRegisterer refactor --- .../javacord/JavacordRegistererStrategy.java | 29 +++++++++++++++ .../wrapper/javacord/JavacordWrapper.java | 35 ++++--------------- 2 files changed, 35 insertions(+), 29 deletions(-) create mode 100644 wrapper/javacord/src/main/java/net/tomatentum/marinara/wrapper/javacord/JavacordRegistererStrategy.java diff --git a/wrapper/javacord/src/main/java/net/tomatentum/marinara/wrapper/javacord/JavacordRegistererStrategy.java b/wrapper/javacord/src/main/java/net/tomatentum/marinara/wrapper/javacord/JavacordRegistererStrategy.java new file mode 100644 index 0000000..4719f28 --- /dev/null +++ b/wrapper/javacord/src/main/java/net/tomatentum/marinara/wrapper/javacord/JavacordRegistererStrategy.java @@ -0,0 +1,29 @@ +package net.tomatentum.marinara.wrapper.javacord; + +import java.util.Set; + +import org.javacord.api.DiscordApi; +import org.javacord.api.interaction.SlashCommandBuilder; + +import net.tomatentum.marinara.wrapper.CommandRegisterer; +import net.tomatentum.marinara.wrapper.ServerCommandList; + +public class JavacordRegistererStrategy implements CommandRegisterer.Strategy { + + private DiscordApi api; + + public JavacordRegistererStrategy(DiscordApi api) { + this.api = api; + } + + @Override + public void registerServer(ServerCommandList commands) { + api.bulkOverwriteServerApplicationCommands(commands.serverId(), commands); + } + + @Override + public void registerGlobal(Set defs) { + api.bulkOverwriteGlobalApplicationCommands(defs); + } + +} diff --git a/wrapper/javacord/src/main/java/net/tomatentum/marinara/wrapper/javacord/JavacordWrapper.java b/wrapper/javacord/src/main/java/net/tomatentum/marinara/wrapper/javacord/JavacordWrapper.java index 5545e32..d3680fa 100644 --- a/wrapper/javacord/src/main/java/net/tomatentum/marinara/wrapper/javacord/JavacordWrapper.java +++ b/wrapper/javacord/src/main/java/net/tomatentum/marinara/wrapper/javacord/JavacordWrapper.java @@ -1,17 +1,11 @@ package net.tomatentum.marinara.wrapper.javacord; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Set; - import org.apache.logging.log4j.Logger; import org.javacord.api.DiscordApi; import org.javacord.api.interaction.SlashCommandBuilder; -import org.javacord.api.interaction.SlashCommandOption; -import org.javacord.api.interaction.SlashCommandOptionChoice; -import net.tomatentum.marinara.interaction.commands.SlashCommandDefinition; import net.tomatentum.marinara.wrapper.CommandConverter; +import net.tomatentum.marinara.wrapper.CommandRegisterer; import net.tomatentum.marinara.wrapper.ContextObjectProvider; import net.tomatentum.marinara.wrapper.IdentifierProvider; import net.tomatentum.marinara.util.LoggerUtil; @@ -22,16 +16,15 @@ import net.tomatentum.marinara.wrapper.javacord.identifierconverter.SlashCommand public class JavacordWrapper extends LibraryWrapper { - private DiscordApi api; private JavacordContextObjectProvider contextObjectProvider; - private CommandConverter commandConverter; + private CommandRegisterer commandRegisterer; private Logger logger = LoggerUtil.getLogger(getClass()); public JavacordWrapper(DiscordApi api) { - this.api = api; this.contextObjectProvider = new JavacordContextObjectProvider(); - this.commandConverter = CommandConverter.of(new JavacordConverterSpec()); + var converter = CommandConverter.of(new JavacordConverterSpec()); + this.commandRegisterer = CommandRegisterer.of(new JavacordRegistererStrategy(api), converter); if (api != null) api.addInteractionCreateListener((e) -> handleInteraction(e.getInteraction())); @@ -41,24 +34,8 @@ public class JavacordWrapper extends LibraryWrapper { } @Override - public void registerSlashCommands(SlashCommandDefinition[] defs) { - HashMap> serverCommands = new HashMap<>(); - Set globalCommands = new HashSet<>(); - for (SlashCommandDefinition slashCommandDefinition : defs) { - SlashCommandBuilder builder = commandConverter.convert(slashCommandDefinition); - if (slashCommandDefinition.rootIdentifier().serverIds().length > 0) { - for (long serverId : slashCommandDefinition.rootIdentifier().serverIds()) { - serverCommands.putIfAbsent(serverId, new HashSet<>()); - serverCommands.get(serverId).add(builder); - } - }else - globalCommands.add(builder); - } - - for (long serverId : serverCommands.keySet()) { - api.bulkOverwriteServerApplicationCommands(serverId, serverCommands.get(serverId)); - } - api.bulkOverwriteGlobalApplicationCommands(globalCommands); + public CommandRegisterer getRegisterer() { + return this.commandRegisterer; } @Override