import { getGuild, getTicket } from "@/database/queries"; import { loggers } from "@/utils/logging"; import type { Client, ModalSubmitInteraction } from "discord.js"; import { INPUT_IDS } from "./_shared"; import { handleClose } from "./actions"; const logger = loggers.interactions.child({ name: "ticket/modals" }); export async function handleReasonModal(_client: Client, interaction: ModalSubmitInteraction) { await interaction.deferReply({ flags: ["Ephemeral"] }); if (!interaction.channelId || !interaction.guildId) { await interaction.editReply({ content: "This command can only be used in a server.", }); return; } const publicReason = interaction.fields.getTextInputValue(INPUT_IDS.REASON); let privateReason = ""; let deleteChannel: boolean = false; try { privateReason = interaction.fields.getTextInputValue(INPUT_IDS.PRIVATE_REASON); } catch {} try { deleteChannel = interaction.fields.getCheckbox("ticket:delete_checkbox"); } catch {} const { data: ticket, exists } = await getTicket(interaction.guildId, interaction.channelId); if (!exists || !ticket) { await interaction.editReply({ content: "❌ This channel is not a valid ticket.", }); return; } const { data: guildData } = await getGuild(interaction.guildId); await handleClose(interaction.client, interaction, ticket, guildData, { publicReason: publicReason || undefined, privateReason: privateReason || undefined, deleteChannel, }); }