aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/commands/owner/setlevel.ts59
-rw-r--r--src/lib/models/Level.ts10
2 files changed, 67 insertions, 2 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()
+ }
+ );
+ }
+}
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<LevelModel, 'xp'>;
+export interface LevelModelCreationAttributes {
+ id: string;
+ xp?: number;
+}
export class Level extends BaseModel<LevelModel, LevelModelCreationAttributes> {
public id: string;
@@ -18,4 +20,8 @@ export class Level extends BaseModel<LevelModel, LevelModelCreationAttributes> {
// WIP
return 0;
}
+ static convertLevelToXp(xp: number): number {
+ // WIP
+ return 0;
+ }
}