woomy-v2/bot/commands/Bot/help.js

91 lines
4.5 KiB
JavaScript
Raw Normal View History

2020-10-29 08:19:46 +00:00
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?`);
}
};