From 6d57803fe85022196b4c31ceb5033602da8bc10b Mon Sep 17 00:00:00 2001 From: Emily J Date: Thu, 29 Oct 2020 19:19:46 +1100 Subject: [PATCH] help command! (wip) --- bot/commands/Bot/help.js | 91 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/bot/commands/Bot/help.js b/bot/commands/Bot/help.js index e69de29..0139f7e 100644 --- a/bot/commands/Bot/help.js +++ b/bot/commands/Bot/help.js @@ -0,0 +1,91 @@ +const Embed = require('../../util/embed'); +const prettified = require ('../../assets/constants/categories.json'); + +module.exports = class { + constructor (name, category) { + this.name = name, + this.category = category, + this.enabled = true, + this.devOnly = false, + this.aliases = [], + this.userPerms = [], + this.botPerms = [], + this.cooldown = 2000, + this.help = { + description: 'meta :P', + arguments: '[command/category]', + details: 'details', + examples: 'examples' + }; + } + + run (client, message, args, data) { //eslint-disable-line no-unused-vars + const commands = client.commands; + const categories = []; + + commands.forEach(cmd => { + if (!categories.includes(cmd.category)) { + if (cmd.category === 'Developer' && !client.config.ownerIDs.includes(message.author.id)) return; + categories.push(cmd.category); + } + }); + + if (!args[0]) { + const embed = new Embed(); + embed.setTitle('Help & Commands'); + embed.setColour(client.functions.displayHexColour(message.channel.guild, client.user.id)); + embed.setDescription( + `» Use \`${message.prefix}help [category]\` to get basic information on all commands in the category. + » Use \`${message.prefix}help [command]\` to get full information on a specific command. + » [Click here](https://discord.gg/HCF8mdv) to join my Discord server if you need help, or just want to hang out!` + ); + categories.forEach(category => { + embed.addField(`${prettified[category].emoji} **${category}**`, `*${prettified[category].description}*\n${client.commands.filter(cmd => cmd.category === category).length} commands`, true); + }); + embed.setFooter('<> = required, / = either/or, [] = optional'); + + return message.channel.createMessage({ embed: embed }); + } + + const cat = args[0].toProperCase(); + const cmd = args[0].toLowerCase(); + + if (categories.includes(cat)) { + let cmds = ''; + const filteredCmds = client.commands.filter(cmd => cmd.category === cat); + + filteredCmds.forEach(cmd => { + let params = ''; + if (cmd.help.arguments.length > 0) params = '`' + cmd.help.arguments + '`'; + cmds += `**${message.prefix + cmd.name}** ${params} ✦ ${cmd.help.description}\n`; + }); + + const embed = new Embed() + .setTitle(prettified[cat].emoji + ' ' + cat) + .setColour(client.functions.displayHexColour(message.channel.guild, client.user.id)) + .setDescription(cmds) + .setFooter('<> = required, / = either/or, [] = optional'); + + return message.channel.createMessage({ embed: embed }); + } + + if (client.commands.has(cmd) || client.aliases.has(cmd)) { + const command = client.commands.get(cmd) || client.commands.get(client.aliases.get(cmd)); + const embed = new Embed() + .setTitle(prettified[command.category].emoji + ' ' + command.category + ' -> ' + command.name.toProperCase()) + .setColour(client.functions.displayHexColour(message.channel.guild, client.user.id)) + .setDescription(command.help.description) + .addField('**Format:**', `\`${message.prefix + command.name} ${command.help.arguments}`.trim() + '`'); + if (command.help.details.length > 0) embed.addField('**Parameters:**', command.help.details); + if (command.help.examples.length > 0) embed.addField('**Examples**', command.help.examples); + if (command.aliases.length > 0) embed.addField('**Aliases:**', '`' + command.aliases.join('`, `') + '`'); + if (command.userPerms.length > 0) embed.addField('**User permissions:**', command.userPerms.join(', '), true); + if (command.botPerms.length > 0) embed.addField('**Bot permissions:', command.botPerms.join(', '), true); + embed.addField('**Cooldown:**', `${command.cooldown / 1000} seconds`, true); + embed.setFooter('<> = required, / = either/or, [] = optional'); + return message.channel.createMessage({ embed: embed }); + } + + return message.channel.createMessage(`${client.constants.emojis.userError} ${cmd} doesn't appear to be a command, alias, or category. Are you sure you spelt it right?`); + } +}; \ No newline at end of file