From 8d6ebd83b16a465b11edfeb43f6a5e58da0076e8 Mon Sep 17 00:00:00 2001 From: TymanWasTaken <32660892+tymanwastaken@users.noreply.github.com> Date: Wed, 12 May 2021 02:41:34 -0600 Subject: add level slash command --- src/commands/moulberry-bush/level.ts | 27 +++++++++++++++++++++++++++ src/lib/extensions/BotCommand.ts | 7 ++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/commands/moulberry-bush/level.ts b/src/commands/moulberry-bush/level.ts index 6dda91a..a70ebf1 100644 --- a/src/commands/moulberry-bush/level.ts +++ b/src/commands/moulberry-bush/level.ts @@ -1,4 +1,5 @@ import { Message } from 'discord.js'; +import { CommandInteraction } from 'discord.js'; import { User } from 'discord.js'; import { BotCommand } from '../../lib/extensions/BotCommand'; import { Level } from '../../lib/models'; @@ -23,6 +24,14 @@ export default class LevelCommand extends BotCommand { optional: true } } + ], + slashCommandOptions: [ + { + type: 6, + name: 'user', + description: 'The user to get the level of', + required: false + } ] }); } @@ -43,4 +52,22 @@ export default class LevelCommand extends BotCommand { ); } } + async execSlash(message: CommandInteraction): Promise { + const user = + message.options.find((o) => o.name === 'user')?.user || message.user; + const userLevelRow = await Level.findByPk(user.id); + if (userLevelRow) { + await message.reply( + `${user.id !== message.user.id ? `${user.tag}'s` : 'Your'} level is ${ + userLevelRow.level + } (${userLevelRow.xp} XP)` + ); + } else { + await message.reply( + `${ + user.id !== message.user.id ? `${user.tag} does` : 'You do' + } not have a level yet!` + ); + } + } } diff --git a/src/lib/extensions/BotCommand.ts b/src/lib/extensions/BotCommand.ts index 79c7a9f..2db93b0 100644 --- a/src/lib/extensions/BotCommand.ts +++ b/src/lib/extensions/BotCommand.ts @@ -1,9 +1,14 @@ import { Command, CommandOptions } from 'discord-akairo'; +import { APIApplicationCommandOption } from 'discord-api-types'; import { BotClient } from './BotClient'; +export interface BotCommandOptions extends CommandOptions { + slashCommandOptions?: APIApplicationCommandOption[]; +} + export class BotCommand extends Command { public client: BotClient; - constructor(id: string, options?: CommandOptions) { + constructor(id: string, options?: BotCommandOptions) { super(id, options); this.options = options; } -- cgit