thaldrin/DiscordModules/General/help.js

130 lines
3.0 KiB
JavaScript
Executable File

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 information on a specific command.',
aliases: [ 'h' ],
module: 'General',
cooldown: 0,
guildOnly: false,
developerOnly: false
});
}
async command(ctx) {
console.log(ctx.args);
let silent = [ '--nd', '--no-dev' ];
if (ctx.args.includes(silent)) {
console.log('is silent');
}
if (!ctx.args.length) {
const commands = [
[
'General',
ctx.client.commands
.filter((command) => command.module == 'General')
.map((command) => `${command.name}`)
.join(' | ')
],
/* [
'Images',
ctx.client.commands
.filter((command) => command.module == 'Images')
.map((command) => `${command.name}`)
.join(' | ')
], */
[
'Images',
ctx.client.commands
.filter((command) => command.module == 'Images')
.map((command) => `${command.name}`)
.join(' | ')
],
[
'Roleplay',
ctx.client.commands
.filter((command) => command.module == 'Roleplay')
.map((command) => `${command.name}`)
.join(' | ')
],
[
'Settings',
ctx.client.commands
.filter((command) => command.module == 'Settings')
.map((command) => `${command.name}`)
.join(' | ')
]
];
if (ctx.isDeveloper)
commands.push([
'Developers',
ctx.client.commands
.filter((command) => command.module == 'Developers')
.map((command) => `${command.name}`)
.join(' | ')
]);
return ctx.send({
embed: {
description: `Use \`'help <command>\` to get help on a specific command`,
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()))
);
if (!command) return ctx.send(`That command couldn't be found. Use \`'help\` to see all commands.`);
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
}
];
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);
}
}
};