From b809411faf8da8004434500ab0e05bd9176af6b4 Mon Sep 17 00:00:00 2001 From: tueem Date: Mon, 14 Oct 2024 17:13:51 +0200 Subject: [PATCH] add registerCommands() method --- .../registry/InteractionRegistry.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lib/src/main/java/net/tomatentum/marinara/registry/InteractionRegistry.java b/lib/src/main/java/net/tomatentum/marinara/registry/InteractionRegistry.java index 852676f..d0f774f 100644 --- a/lib/src/main/java/net/tomatentum/marinara/registry/InteractionRegistry.java +++ b/lib/src/main/java/net/tomatentum/marinara/registry/InteractionRegistry.java @@ -1,10 +1,15 @@ package net.tomatentum.marinara.registry; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.List; +import java.util.Optional; import net.tomatentum.marinara.handler.InteractionHandler; import net.tomatentum.marinara.interaction.InteractionType; +import net.tomatentum.marinara.interaction.commands.ApplicationCommandDefinition; +import net.tomatentum.marinara.interaction.commands.ExecutableCommandDefinition; +import net.tomatentum.marinara.interaction.methods.CommandInteractionMethod; import net.tomatentum.marinara.interaction.methods.InteractionMethod; import net.tomatentum.marinara.wrapper.LibraryWrapper; @@ -23,6 +28,24 @@ public class InteractionRegistry { } } + public void registerCommands() { + List defs = new ArrayList<>(); + List execDefs = interactionMethods.stream() + .filter((x) -> x.getClass().isAssignableFrom(CommandInteractionMethod.class)) + .map((x) -> ((CommandInteractionMethod)x).getCommandDefinition()) + .toList(); + + execDefs.forEach((def) -> { + Optional appDef = defs.stream() + .filter((x) -> x.applicationCommand().equals(def.applicationCommand())) + .findFirst(); + if (appDef.isPresent()) + appDef.get().addExecutableCommand(def); + else + defs.add(new ApplicationCommandDefinition(def.applicationCommand()).addExecutableCommand(def)); + }); + } + public void handle(Object context) { interactionMethods.forEach((m) -> { InteractionType type = wrapper.getInteractionType(context.getClass());