88 lines
3.7 KiB
Java
88 lines
3.7 KiB
Java
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<CommandInfo> getSlashCommandInfo() {
|
|
List<CommandInfo> cil = new ArrayList<>();
|
|
var ci = new CommandInfo("help", "Displays all enabled commands this bot has.", CommandType.COMMAND);
|
|
cil.add(ci);
|
|
return cil;
|
|
}
|
|
}
|