improve wrapper and general structure #16
@ -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<SlashCommandBuilder> {
|
||||||
|
|
||||||
|
private DiscordApi api;
|
||||||
|
|
||||||
|
public JavacordRegistererStrategy(DiscordApi api) {
|
||||||
|
this.api = api;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerServer(ServerCommandList<SlashCommandBuilder> commands) {
|
||||||
|
api.bulkOverwriteServerApplicationCommands(commands.serverId(), commands);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerGlobal(Set<SlashCommandBuilder> defs) {
|
||||||
|
api.bulkOverwriteGlobalApplicationCommands(defs);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,17 +1,11 @@
|
|||||||
package net.tomatentum.marinara.wrapper.javacord;
|
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.apache.logging.log4j.Logger;
|
||||||
import org.javacord.api.DiscordApi;
|
import org.javacord.api.DiscordApi;
|
||||||
import org.javacord.api.interaction.SlashCommandBuilder;
|
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.CommandConverter;
|
||||||
|
import net.tomatentum.marinara.wrapper.CommandRegisterer;
|
||||||
import net.tomatentum.marinara.wrapper.ContextObjectProvider;
|
import net.tomatentum.marinara.wrapper.ContextObjectProvider;
|
||||||
import net.tomatentum.marinara.wrapper.IdentifierProvider;
|
import net.tomatentum.marinara.wrapper.IdentifierProvider;
|
||||||
import net.tomatentum.marinara.util.LoggerUtil;
|
import net.tomatentum.marinara.util.LoggerUtil;
|
||||||
@ -22,16 +16,15 @@ import net.tomatentum.marinara.wrapper.javacord.identifierconverter.SlashCommand
|
|||||||
|
|
||||||
public class JavacordWrapper extends LibraryWrapper {
|
public class JavacordWrapper extends LibraryWrapper {
|
||||||
|
|
||||||
private DiscordApi api;
|
|
||||||
private JavacordContextObjectProvider contextObjectProvider;
|
private JavacordContextObjectProvider contextObjectProvider;
|
||||||
private CommandConverter<SlashCommandBuilder, SlashCommandOption, SlashCommandOptionChoice> commandConverter;
|
private CommandRegisterer<SlashCommandBuilder> commandRegisterer;
|
||||||
|
|
||||||
private Logger logger = LoggerUtil.getLogger(getClass());
|
private Logger logger = LoggerUtil.getLogger(getClass());
|
||||||
|
|
||||||
public JavacordWrapper(DiscordApi api) {
|
public JavacordWrapper(DiscordApi api) {
|
||||||
this.api = api;
|
|
||||||
this.contextObjectProvider = new JavacordContextObjectProvider();
|
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)
|
if (api != null)
|
||||||
api.addInteractionCreateListener((e) -> handleInteraction(e.getInteraction()));
|
api.addInteractionCreateListener((e) -> handleInteraction(e.getInteraction()));
|
||||||
@ -41,24 +34,8 @@ public class JavacordWrapper extends LibraryWrapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerSlashCommands(SlashCommandDefinition[] defs) {
|
public CommandRegisterer<?> getRegisterer() {
|
||||||
HashMap<Long, Set<SlashCommandBuilder>> serverCommands = new HashMap<>();
|
return this.commandRegisterer;
|
||||||
Set<SlashCommandBuilder> 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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
x
Reference in New Issue
Block a user