From 8f14b0feb977d065dbd3b9dfc22493cadcc87e57 Mon Sep 17 00:00:00 2001 From: Tueem Date: Wed, 19 Feb 2025 21:49:12 +0100 Subject: [PATCH] split up getSubCommands --- .../commands/SlashCommandDefinition.java | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/lib/src/main/java/net/tomatentum/marinara/interaction/commands/SlashCommandDefinition.java b/lib/src/main/java/net/tomatentum/marinara/interaction/commands/SlashCommandDefinition.java index 9b0b3fb..376f7a2 100644 --- a/lib/src/main/java/net/tomatentum/marinara/interaction/commands/SlashCommandDefinition.java +++ b/lib/src/main/java/net/tomatentum/marinara/interaction/commands/SlashCommandDefinition.java @@ -51,21 +51,16 @@ public class SlashCommandDefinition { subCommandGroupMap.put(x.name(), x); }); - return subCommandGroupMap.values().toArray(new SubCommandGroup[0]); + return subCommandGroupMap.values().toArray(SubCommandGroup[]::new); } - public SubCommand[] getSubCommands(String groupName) { + public SubCommand[] getSubCommands() { List subCommands; - if (groupName == null) - subCommands = Arrays.stream(getExecutableDefinitons()) - .filter((x) -> x.subCommandGroup() == null && x.subCommand() != null) - .map((x) -> x.subCommand()) - .toList(); - else - subCommands = Arrays.stream(getExecutableDefinitons()) - .filter((x) -> x.subCommandGroup().name().equals(groupName) && x.subCommand() != null) - .map((x) -> x.subCommand()) - .toList(); + subCommands = Arrays.stream(getExecutableDefinitons()) + .filter((x) -> x.subCommandGroup() == null && x.subCommand() != null) + .map((x) -> x.subCommand()) + .toList(); + HashMap subCommandMap = new HashMap<>(); subCommands.forEach((x) -> { @@ -74,18 +69,24 @@ public class SlashCommandDefinition { subCommandMap.put(x.name(), x); }); - return subCommandMap.values().toArray(new SubCommand[0]); + return subCommandMap.values().toArray(SubCommand[]::new); } - public SlashCommand getFullSlashCommand() { - if (isRootCommand()) - return getSlashCommand(); - for (ExecutableSlashCommandDefinition executableSlashCommandDefinition : executableDefinitons) { - if (executableSlashCommandDefinition.options().length > 0) - return executableSlashCommandDefinition.applicationCommand(); - } + public SubCommand[] getSubCommands(String groupName) { + List subCommands; + subCommands = Arrays.stream(getExecutableDefinitons()) + .filter((x) -> x.subCommandGroup().name().equals(groupName) && x.subCommand() != null) + .map((x) -> x.subCommand()) + .toList(); + + HashMap subCommandMap = new HashMap<>(); + subCommands.forEach((x) -> { + SubCommand current = subCommandMap.get(x.name()); + if (current == null || (current.description().isBlank() && !x.description().isBlank())) + subCommandMap.put(x.name(), x); + }); - return null; + return subCommandMap.values().toArray(SubCommand[]::new); } public SlashCommand getSlashCommand() {