aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/commands/info/help.ts51
1 files changed, 39 insertions, 12 deletions
diff --git a/src/commands/info/help.ts b/src/commands/info/help.ts
index 440bcb2..c814adb 100644
--- a/src/commands/info/help.ts
+++ b/src/commands/info/help.ts
@@ -8,7 +8,7 @@ export default class HelpCommand extends BushCommand {
category: 'info',
description: {
content: 'Displays a list of commands, or detailed information for a specific command.',
- usage: 'help [command]',
+ usage: ['help [command]'],
examples: ['help prefix']
},
args: [
@@ -28,7 +28,7 @@ export default class HelpCommand extends BushCommand {
slashOptions: [
{
name: 'command',
- description: 'The command you would like to find information about.',
+ description: 'What command do you need help with?',
type: 'STRING',
required: false
}
@@ -41,7 +41,7 @@ export default class HelpCommand extends BushCommand {
public override async exec(
message: BushMessage | BushSlashMessage,
args: { command: BushCommand | string; showHidden?: boolean }
- ): Promise<unknown> {
+ ) {
const prefix = util.prefix(message);
const row = new MessageActionRow();
@@ -110,17 +110,44 @@ export default class HelpCommand extends BushCommand {
const embed = new MessageEmbed()
.setColor(util.colors.default)
- .setTitle(`\`${command.description?.usage || `${util.emojis.error} This command does not have usages.`}\``)
- .addField(
- 'Description',
- `${command.description?.content || `${util.emojis.error} This command does not have a description.`} ${
- command.ownerOnly ? '\n__Developer Only__' : ''
- } ${command.superUserOnly ? '\n__Super User Only__' : ''}`
+ .setTitle(`${command.id} Command`)
+ .setDescription(`${command.description?.content ?? '*This command does not have a description.*'}`);
+ if (command.description?.usage?.length) {
+ embed.addField(
+ `» Usage${command.description.usage.length > 1 ? 's' : ''}`,
+ command.description.usage.map((u) => `\`${u}\``).join('\n')
);
-
- if (command.aliases?.length > 1) embed.addField('Aliases', `\`${command.aliases.join('` `')}\``, true);
+ }
if (command.description?.examples?.length) {
- embed.addField('Examples', `\`${command.description.examples.join('`\n`')}\``, true);
+ embed.addField(
+ `» Example${command.description.examples.length > 1 ? 's' : ''}`,
+ command.description.examples.map((u) => `\`${u}\``).join('\n')
+ );
+ }
+ if (command.aliases?.length > 1) embed.addField('» Aliases', `\`${command.aliases.join('` `')}\``);
+ if (
+ command.ownerOnly ||
+ command.superUserOnly ||
+ command.hidden ||
+ command.channel ||
+ command.restrictedChannels?.length ||
+ command.restrictedGuilds?.length
+ ) {
+ const restrictions: string[] = [];
+ if (command.ownerOnly) restrictions.push('__Developer Only__');
+ if (command.ownerOnly) restrictions.push('__Super User Only__');
+ if (command.hidden) restrictions.push('__Hidden__');
+ if (command.channel === 'dm') restrictions.push('__DM Only__');
+ if (command.channel === 'guild') restrictions.push('__Server Only__');
+ if (command.restrictedChannels?.length)
+ restrictions.push(`__Restricted Channels__: ${command.restrictedChannels.map((c) => `<#${c}>`).join(' ')}`);
+ if (command.restrictedGuilds?.length)
+ restrictions.push(
+ `__Restricted Servers__: ${command.restrictedGuilds
+ .map((g) => util.format.inlineCode(client.guilds.cache.find((g1) => g1.id === g)?.name ?? 'Unknown'))
+ .join(' ')}`
+ );
+ if (restrictions.length) embed.addField('» Restrictions', restrictions.join('\n'));
}
return await message.util.reply({ embeds: [embed], components: [row] });