aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/commands/owner/reload.ts17
-rw-r--r--src/commands/owner/setlevel.ts50
2 files changed, 52 insertions, 15 deletions
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<void> {
+ private async getResponse(): Promise<string> {
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<void> {
+ await message.util.send(await this.getResponse())
+ }
+
+ public async execSlash(message: CommandInteraction): Promise<void> {
+ 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<void> {
+
+ private async setLevel(user: User, level: number): Promise<string> {
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<void> {
+ await message.util.send(await this.setLevel(user, level), {
+ allowedMentions: AllowedMentions.none()
+ })
+ }
+
+ async execSlash(
+ message: CommandInteraction,
+ { user, level }: { user: SlashCommandOption<void>; level: SlashCommandOption<number> }
+ ): Promise<void> {
+ await message.reply(await this.setLevel(user.user, level.value), {
+ allowedMentions: AllowedMentions.none()
+ })
}
}