import {SubcommandData} from "../types" import { ActivityType, ApplicationCommandOptionType, ApplicationCommandSubCommandData, ChatInputCommandInteraction, } from "discord.js" import {wrappedRestart} from "../../ipc/restart" import {UsersTable} from "../../database/users.js" export class BotRestartCommand extends SubcommandData { private readonly _users: UsersTable private readonly _cleanUp: () => Promise constructor({users, cleanUp}: { users: UsersTable, cleanUp(): Promise }) { super() this._users = users this._cleanUp = cleanUp } readonly definition: ApplicationCommandSubCommandData = { name: "restart", type: ApplicationCommandOptionType.Subcommand, description: "Tells the bot to restart.", } async execute(b: ChatInputCommandInteraction): Promise { if (await this._users.getActiveSnowflakeIsAdmin(b.user.id)) { await b.reply({ ephemeral: true, content: "Yaaaawwn... Okay... Just a quick nap then...", }) const self = b.client.user self.setPresence({ status: "idle", afk: true, activities: [ { type: ActivityType.Listening, name: "A New Day", }, ], }) await wrappedRestart(b, this._cleanUp) } else { await b.reply({ ephemeral: true, content: "Heeey... I don't gotta do what you say...", }) } } }