|
|
|
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<void>
|
|
|
|
|
|
|
|
constructor({users, cleanUp}: { users: UsersTable, cleanUp(): Promise<void> }) {
|
|
|
|
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<void> {
|
|
|
|
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...",
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|