diff options
Diffstat (limited to 'src/commands/owner/setlevel.ts')
-rw-r--r-- | src/commands/owner/setlevel.ts | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/commands/owner/setlevel.ts b/src/commands/owner/setlevel.ts new file mode 100644 index 0000000..3c76fa0 --- /dev/null +++ b/src/commands/owner/setlevel.ts @@ -0,0 +1,59 @@ +import { User } from 'discord.js'; +import { Message } from 'discord.js'; +import { BotCommand } from '../../lib/extensions/BotCommand'; +import { Level } from '../../lib/models'; +import AllowedMentions from '../../lib/utils/AllowedMentions'; + +export default class SetLevelCommand extends BotCommand { + constructor() { + super('setlevel', { + aliases: ['setlevel'], + description: { + content: 'Sets the level of a user', + usage: 'setlevel <user> <level>', + examples: ['setlevel @Moulberry 69'] + }, + args: [ + { + id: 'user', + type: 'user', + prompt: { + start: 'What user would you like to change the level of?', + retry: + 'Invalid user. What user would you like to change the level of?' + } + }, + { + id: 'level', + type: 'number', + prompt: { + start: 'What level would you like to set?', + retry: 'Invalid user. What level would you like to set?' + } + } + ], + ownerOnly: true + }); + } + async exec( + message: Message, + { user, level }: { user: User; level: number } + ): Promise<void> { + const [levelEntry] = await Level.findOrBuild({ + where: { + id: user.id + }, + defaults: { + id: user.id + } + }); + 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() + } + ); + } +} |