import {CommandContext, SlashCommand, SlashCreator} from "slash-create"; import {Snowflake} from "discord-api-types"; import {Pool} from "pg"; import {singleQueryResult} from "../../queries/QueryHelpers.js"; import {sendErrorMessage} from "../../queries/ErrorCodes.js"; export class UnjoinCommand extends SlashCommand { readonly pool: Pool constructor(creator: SlashCreator, {pool, gameGuildIds}: { pool: Pool, gameGuildIds: Snowflake[], }) { super(creator, { name: "debug_unjoin", guildIDs: gameGuildIds, description: "Allows an existing player to quit the game.", options: [] }); this.pool = pool } async run(ctx: CommandContext): Promise { try { const result: number | undefined = singleQueryResult(await this.pool.query({ text: "SELECT Command_Unjoin($1, $2, $3, $4, $5)", values: [ctx.channelID, ctx.guildID, ctx.user.id, ctx.user.username, ctx.user.discriminator], rowMode: "array", })) if (typeof result === "number") { await ctx.send({ content: `You got it! I've removed you from the register. Make sure to note down your old user ID: ${result}.`, ephemeral: true, }) } else { await ctx.send({ content: `You're actually not on the register to begin with. So... mission accomplished?`, ephemeral: true, }) } } catch (e) { await sendErrorMessage(ctx, e) } } }