From 3b02bab4f786b9beb5afa18606d3e1d8fea0003d Mon Sep 17 00:00:00 2001 From: TymanWasTaken Date: Tue, 18 May 2021 23:16:35 -0400 Subject: that should be it for adding slash commands to existing commands (yes I skipped eval) --- src/commands/owner/reload.ts | 17 ++++++++++---- src/commands/owner/setlevel.ts | 50 ++++++++++++++++++++++++++++++++---------- 2 files changed, 52 insertions(+), 15 deletions(-) (limited to 'src/commands') 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 { + private async getResponse(): Promise { 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 { + await message.util.send(await this.getResponse()) + } + + public async execSlash(message: CommandInteraction): Promise { + 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 { + + private async setLevel(user: User, level: number): Promise { 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 { + await message.util.send(await this.setLevel(user, level), { + allowedMentions: AllowedMentions.none() + }) + } + + async execSlash( + message: CommandInteraction, + { user, level }: { user: SlashCommandOption; level: SlashCommandOption } + ): Promise { + await message.reply(await this.setLevel(user.user, level.value), { + allowedMentions: AllowedMentions.none() + }) } } -- cgit