From ca380193453a1bfa12d3da38bb7a0ea96d8577b9 Mon Sep 17 00:00:00 2001 From: TymanWasTaken <32660892+tymanwastaken@users.noreply.github.com> Date: Tue, 11 May 2021 23:08:28 -0600 Subject: add setlevel command --- src/commands/owner/setlevel.ts | 59 ++++++++++++++++++++++++++++++++++++++++++ src/lib/models/Level.ts | 10 +++++-- 2 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 src/commands/owner/setlevel.ts 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 ', + 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 { + 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() + } + ); + } +} diff --git a/src/lib/models/Level.ts b/src/lib/models/Level.ts index bce9aa4..65ec8e6 100644 --- a/src/lib/models/Level.ts +++ b/src/lib/models/Level.ts @@ -1,4 +1,3 @@ -import { Optional } from 'sequelize/types'; import { BaseModel } from './BaseModel'; export interface LevelModel { @@ -6,7 +5,10 @@ export interface LevelModel { xp: number; } -export type LevelModelCreationAttributes = Optional; +export interface LevelModelCreationAttributes { + id: string; + xp?: number; +} export class Level extends BaseModel { public id: string; @@ -18,4 +20,8 @@ export class Level extends BaseModel { // WIP return 0; } + static convertLevelToXp(xp: number): number { + // WIP + return 0; + } } -- cgit