diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/commands/owner/reload.ts | 17 | ||||
-rw-r--r-- | src/commands/owner/setlevel.ts | 50 |
2 files changed, 52 insertions, 15 deletions
diff --git a/src/commands/owner/reload.ts b/src/commands/owner/reload.ts index 6fdd74c..7a508d7 100644 --- a/src/commands/owner/reload.ts +++ b/src/commands/owner/reload.ts @@ -1,6 +1,7 @@ import { BotCommand } from '../../lib/extensions/BotCommand'; import { stripIndent } from 'common-tags'; import { Message } from 'discord.js'; +import { CommandInteraction } from 'discord.js'; export default class ReloadCommand extends BotCommand { constructor() { @@ -16,19 +17,27 @@ export default class ReloadCommand extends BotCommand { }); } - public async exec(message: Message): Promise<void> { + private async getResponse(): Promise<string> { try { await this.client.util.shell('yarn rimraf dist/'); await this.client.util.shell('yarn tsc'); this.client.commandHandler.reloadAll(); this.client.listenerHandler.reloadAll(); this.client.inhibitorHandler.reloadAll(); - await message.util.send('🔁 Successfully reloaded!'); + return '🔁 Successfully reloaded!'; } catch (e) { - await message.util.send(stripIndent` + return stripIndent` An error occured while reloading: ${await this.client.util.haste(e.stack)} - `); + `; } } + + public async exec(message: Message): Promise<void> { + await message.util.send(await this.getResponse()) + } + + public async execSlash(message: CommandInteraction): Promise<void> { + await message.reply(await this.getResponse()) + } } diff --git a/src/commands/owner/setlevel.ts b/src/commands/owner/setlevel.ts index 3c76fa0..c9d28a4 100644 --- a/src/commands/owner/setlevel.ts +++ b/src/commands/owner/setlevel.ts @@ -1,6 +1,9 @@ +import { ApplicationCommandOptionType } from 'discord-api-types'; +import { CommandInteraction } from 'discord.js'; import { User } from 'discord.js'; import { Message } from 'discord.js'; import { BotCommand } from '../../lib/extensions/BotCommand'; +import { SlashCommandOption } from '../../lib/extensions/Util'; import { Level } from '../../lib/models'; import AllowedMentions from '../../lib/utils/AllowedMentions'; @@ -32,13 +35,25 @@ export default class SetLevelCommand extends BotCommand { } } ], - ownerOnly: true + ownerOnly: true, + slashCommandOptions: [ + { + type: ApplicationCommandOptionType.USER, + name: 'user', + description: 'The user to change the level of', + required: true + }, + { + type: ApplicationCommandOptionType.INTEGER, + name: 'level', + description: 'The level to set the user to', + required: true + } + ] }); } - async exec( - message: Message, - { user, level }: { user: User; level: number } - ): Promise<void> { + + private async setLevel(user: User, level: number): Promise<string> { const [levelEntry] = await Level.findOrBuild({ where: { id: user.id @@ -49,11 +64,24 @@ export default class SetLevelCommand extends BotCommand { }); levelEntry.xp = Level.convertLevelToXp(level); await levelEntry.save(); - await message.reply( - `Successfully set level of <@${user.id}> to \`${level}\` (\`${levelEntry.xp}\` XP)`, - { - allowedMentions: AllowedMentions.none() - } - ); + return `Successfully set level of <@${user.id}> to \`${level}\` (\`${levelEntry.xp}\` XP)` + } + + async exec( + message: Message, + { user, level }: { user: User; level: number } + ): Promise<void> { + await message.util.send(await this.setLevel(user, level), { + allowedMentions: AllowedMentions.none() + }) + } + + async execSlash( + message: CommandInteraction, + { user, level }: { user: SlashCommandOption<void>; level: SlashCommandOption<number> } + ): Promise<void> { + await message.reply(await this.setLevel(user.user, level.value), { + allowedMentions: AllowedMentions.none() + }) } } |