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