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 = ""; try { privateReason = interaction.fields.getTextInputValue( INPUT_IDS.PRIVATE_REASON, ); } catch {} const deleteChannel = interaction.fields.getCheckbox( "ticket:delete_checkbox", ); 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, }); }