const Command = require('../../src/structures/Command'); const {MessageEmbed} = require('discord.js') module.exports = class Help extends Command { constructor() { super({ name: 'help', description: 'View a list of available commands, or view information on a specific command.', aliases: ['h'], module: 'General', cooldown: 0, guildOnly: false, developerOnly: false }); } async command(ctx) { if (!ctx.args.length) { const commands = [ ['General', ctx.client.commands.filter((command) => command.module == 'General').map((command) => `**${command.name}** - ${command.description}`).join('\n')] ] if (ctx.isDeveloper) commands.push(['Developers', ctx.client.commands.filter((command) => command.module == 'Developers').map((command) => command.name).join(', ')]); return ctx.send({ embed: { fields: commands.map((group) => { return new Object({ name: group[0], value: group[1] }); }), color: 0xFF873F } }); } else { const command = ctx.client.commands.find(c => c.name == ctx.args[0].toLowerCase() || c.aliases && c.aliases.includes(ctx.args[0].toLowerCase())); let fields = [ { name: 'Module', value: command.module, inline: true }, { name: 'Aliases', value: command.aliases.length == 0 ? 'No aliases' : command.aliases.join(', '), inline: true }, { name: 'Cooldown', value: command.cooldown == 0 ? 'No cooldown' : `${command.cooldown}s`, inline: true }, { name: 'Server only?', value: command.guildOnly ? 'Yes' : 'No', inline: true }, { name: 'Developers only?', value: command.developerOnly ? 'Yes' : 'No', inline: true }, ] if (!command) return ctx.send(`That command couldn't be found. See the \`help\` command for valid commands.`); let embed = new MessageEmbed() .setTitle(command.name) .setDescription(command.description) .setColor(0xFF873F) fields.forEach(i => { embed.addField(i.name, i.value, i.inline) }); return ctx.send(embed); } } }