help command! (wip)
This commit is contained in:
parent
c3d25dfd84
commit
6d57803fe8
1 changed files with 91 additions and 0 deletions
|
@ -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?`);
|
||||
}
|
||||
};
|
Loading…
Reference in a new issue