63 lines
2.5 KiB
JavaScript
63 lines
2.5 KiB
JavaScript
const { SlashCommandBuilder } = require("discord.js");
|
|
const fs = require("fs");
|
|
|
|
module.exports = {
|
|
data: new SlashCommandBuilder()
|
|
.setName("help")
|
|
.setDescription("List all commands or info about a specific command")
|
|
.addStringOption(option =>
|
|
option.setName("command")
|
|
.setDescription("The command to get info on")
|
|
.setRequired(false)
|
|
),
|
|
permissionLevel: 0,
|
|
async execute(interaction) {
|
|
await interaction.deferReply();
|
|
|
|
//reply with a list of all commands
|
|
if (!interaction.options.getString("command")) {
|
|
let commands = [];
|
|
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
|
|
for (const file of commandFiles) {
|
|
const command = require(`./${file}`);
|
|
if (!command.permissionLevel || command.permissionLevel < 2) {
|
|
commands.push(command.data.name);
|
|
}
|
|
}
|
|
interaction.editReply({ content: `Here's a list of all my commands: \n \`${commands.join('`, `')}\`` });
|
|
return;
|
|
}
|
|
//reply with info about a specific command
|
|
else {
|
|
const commandName = interaction.options.getString("command");
|
|
const command = interaction.client.commands.get(commandName);
|
|
if (!command) {
|
|
await interaction.editReply(`Command /${commandName} does not exist`);
|
|
}
|
|
else {
|
|
let reply = `Name: /${command.data.name}\n` +
|
|
`Description: ${command.data.description}\n`+
|
|
`Permission Level: ${command.permissionLevel}\n`;
|
|
if (command.help) {
|
|
reply += `${command.help}\n`;
|
|
}
|
|
if (command.data.options) {
|
|
reply += `Options:\n`;
|
|
for (const option of command.data.options) {
|
|
reply += `\t${option.name}: ${option.description}\n`;
|
|
|
|
if (option.type === "SUB_COMMAND") {
|
|
reply += `\t\tOptions:\n`;
|
|
for (const subOption of option.options) {
|
|
reply += `\t\t\t${subOption.name}: ${subOption.description}\n`;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
await interaction.editReply(reply);
|
|
}
|
|
}
|
|
}
|
|
}
|