package moe.oko.Kiafumi.command.utility; import moe.oko.Kiafumi.Kiafumi; import moe.oko.Kiafumi.command.CommandClass; import moe.oko.Kiafumi.util.CommandInfo; import moe.oko.Kiafumi.util.CommandType; import moe.oko.Kiafumi.util.EmbedUI; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; import static moe.oko.Kiafumi.util.LoggingManager.slashLog; public class HelpCommand extends CommandClass { @Override public boolean isEnabled() { return true; } @Override public String getName() { return "Help"; } @Override public void newCommand(String name, SlashCommandInteractionEvent e) { if ("help".equalsIgnoreCase(name)) { slashLog(e); e.deferReply().queue(); // We assemble a help string, this is our description for our embed. var sb = new StringBuilder(); for(CommandClass cc : Kiafumi.instance.activeCommands) { for(CommandInfo ci : cc.getSlashCommandInfo()) { var cname = ci.getName(); var cdesc= ci.getDescription(); sb.append("**").append(cname).append("** - __").append(cdesc).append("__\n"); if(ci.hasOptions()) { for (String opt : ci.getOptions().keySet()) { sb.append("-> **").append(opt).append("** `").append(ci.getOptions().get(opt).name()) .append("` *").append(ci.getOptionDescriptions().get(opt)).append("*"); if (ci.getOptionRequirements().get(opt)) { sb.append(" __***[REQUIRED]***__"); } sb.append("\n"); } } if(ci.hasSubCommands()) { for (String subc : ci.getSubCommands().keySet()) { var subCommand = ci.getSubCommands().get(subc); sb.append("-> **").append(subc).append("** *").append(subCommand.getDescription()).append("*\n"); if (subCommand.hasOptions()) { for (String opt : subCommand.getOptions().keySet()) { sb.append("--> **").append(opt).append("** `").append(subCommand.getOptions().get(opt).name()) .append("` *").append(subCommand.getOptionDescriptions().get(opt)).append("*"); if (subCommand.getOptionRequirements().get(opt)) { sb.append(" __***[REQUIRED]***__"); } sb.append("\n"); } } sb.append("\n"); } } sb.append("\n"); } } EmbedBuilder eb = new EmbedBuilder() .setColor(EmbedUI.INFO) .setTimestamp(ZonedDateTime.now()) .setFooter(EmbedUI.BRAND) .setTitle("Help Command") .setDescription(sb.toString()); e.getHook().sendMessageEmbeds(eb.build()).queue(); } } @Override public List getSlashCommandInfo() { List cil = new ArrayList<>(); var ci = new CommandInfo("help", "Displays all enabled commands this bot has.", CommandType.COMMAND); cil.add(ci); return cil; } }