aboutsummaryrefslogtreecommitdiff
path: root/src/commands/dev/reload.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/commands/dev/reload.ts')
-rw-r--r--src/commands/dev/reload.ts44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/commands/dev/reload.ts b/src/commands/dev/reload.ts
new file mode 100644
index 0000000..64e5745
--- /dev/null
+++ b/src/commands/dev/reload.ts
@@ -0,0 +1,44 @@
+import { BushCommand } from '../../lib/extensions/BushCommand';
+import { stripIndent } from 'common-tags';
+import { Message } from 'discord.js';
+import { CommandInteraction } from 'discord.js';
+
+export default class ReloadCommand extends BushCommand {
+ constructor() {
+ super('reload', {
+ aliases: ['reload'],
+ category: 'dev',
+ description: {
+ content: 'Reloads the bot',
+ usage: 'reload',
+ examples: ['reload']
+ },
+ ownerOnly: true,
+ typing: true
+ });
+ }
+
+ 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();
+ return '🔁 Successfully reloaded!';
+ } catch (e) {
+ 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());
+ }
+}