aboutsummaryrefslogtreecommitdiff
path: root/src/commands/info/HelpCommand.ts
diff options
context:
space:
mode:
authorTymanWasTaken <32660892+tymanwastaken@users.noreply.github.com>2021-04-27 21:06:22 -0600
committerTymanWasTaken <32660892+tymanwastaken@users.noreply.github.com>2021-04-27 21:06:22 -0600
commit763fb7d98c3accbb21adf035a7cf0a83cb9533c9 (patch)
tree9d333fbca2a2a8e19d79904a4e29226174925cfc /src/commands/info/HelpCommand.ts
downloadtanzanite-763fb7d98c3accbb21adf035a7cf0a83cb9533c9.tar.gz
tanzanite-763fb7d98c3accbb21adf035a7cf0a83cb9533c9.tar.bz2
tanzanite-763fb7d98c3accbb21adf035a7cf0a83cb9533c9.zip
legit just copy utilibot v2 code
Diffstat (limited to 'src/commands/info/HelpCommand.ts')
-rw-r--r--src/commands/info/HelpCommand.ts79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/commands/info/HelpCommand.ts b/src/commands/info/HelpCommand.ts
new file mode 100644
index 0000000..4aa45e0
--- /dev/null
+++ b/src/commands/info/HelpCommand.ts
@@ -0,0 +1,79 @@
+import { Message, MessageEmbed } from 'discord.js';
+import { BotCommand } from '../../lib/extensions/BotCommand';
+import { stripIndent } from 'common-tags';
+import { BotMessage } from '../../lib/extensions/BotMessage';
+
+export default class HelpCommand extends BotCommand {
+ constructor() {
+ super('help', {
+ aliases: ['help'],
+ description: {
+ content: 'Shows the commands of the bot',
+ usage: 'help',
+ examples: ['help']
+ },
+ clientPermissions: ['EMBED_LINKS'],
+ args: [
+ {
+ id: 'command',
+ type: 'commandAlias'
+ }
+ ]
+ });
+ }
+
+ public async exec(
+ message: BotMessage,
+ { command }: { command: BotCommand }
+ ): Promise<Message> {
+ const prefix = this.handler.prefix;
+ if (!command) {
+ const embed = new MessageEmbed()
+ .addField(
+ 'Commands',
+ stripIndent`A list of available commands.
+ For additional info on a command, type \`${prefix}help <command>\`
+ `
+ )
+ .setFooter(
+ `For more information about a command use "${this.client.config.prefix}help <command>"`
+ )
+ .setTimestamp();
+ for (const category of this.handler.categories.values()) {
+ embed.addField(
+ `${category.id.replace(/(\b\w)/gi, (lc): string =>
+ lc.toUpperCase()
+ )}`,
+ `${category
+ .filter((cmd): boolean => cmd.aliases.length > 0)
+ .map((cmd): string => `\`${cmd.aliases[0]}\``)
+ .join(' ')}`
+ );
+ }
+ return message.util.send(embed);
+ }
+
+ const embed = new MessageEmbed()
+ .setColor([155, 200, 200])
+ .setTitle(
+ `\`${command.description.usage ? command.description.usage : ''}\``
+ )
+ .addField(
+ 'Description',
+ `${command.description.content ? command.description.content : ''} ${
+ command.ownerOnly ? '\n__Owner Only__' : ''
+ }`
+ );
+
+ if (command.aliases.length > 1)
+ embed.addField('Aliases', `\`${command.aliases.join('` `')}\``, true);
+ if (command.description.examples && command.description.examples.length)
+ embed.addField(
+ 'Examples',
+ `\`${command.description.examples.join('`\n`')}\``,
+ true
+ );
+
+ return message.util.send(embed);
+ }
+}