diff --git a/src/modals/add-knowledgebase-item-modal.ts b/src/modals/add-knowledgebase-item-modal.ts index b2eb2dd..bb4811e 100644 --- a/src/modals/add-knowledgebase-item-modal.ts +++ b/src/modals/add-knowledgebase-item-modal.ts @@ -31,7 +31,7 @@ class AddKnowledgebaseItemModal implements Modal { }); await Database.addToKnowledgebase(interaction.guildId, name, content); - await interaction.editReply(`\`${name}\` has been added to the knowledgebase.`); + await interaction.editReply({ content: `\`${name}\` has been added to the knowledgebase.` }); } catch (error: Error | any) { await interaction.editReply({ content: error.message }).catch(() => {}); } diff --git a/src/modals/edit-knowledgebase-item-modal.ts b/src/modals/edit-knowledgebase-item-modal.ts index eb94fc9..34a2461 100644 --- a/src/modals/edit-knowledgebase-item-modal.ts +++ b/src/modals/edit-knowledgebase-item-modal.ts @@ -32,7 +32,7 @@ class EditKnowledgebaseItemModal implements Modal { }); await Database.editKnowledgebaseItem(id, content); - await interaction.editReply(`\`${existing.name}\` has been edited.`); + await interaction.editReply({ content: `\`${existing.name}\` has been edited.` }); } catch (error: Error | any) { await interaction.editReply({ content: error.message }).catch(() => {}); } diff --git a/src/modals/open-mod-ticket.ts b/src/modals/open-mod-ticket.ts index 014093b..531280f 100644 --- a/src/modals/open-mod-ticket.ts +++ b/src/modals/open-mod-ticket.ts @@ -1,7 +1,7 @@ import { Client, MessageFlags, ModalSubmitInteraction } from 'discord.js'; import { Database } from '../shared/Database'; -import { createPrivateHelpTicketThread } from '../utils'; import { Modal } from '../types'; +import { createPrivateHelpTicketThread } from '../utils'; const warning = '\n\n\nLeaving this thread without acknowledgement may result in punishment. Staff will close the thread when they deem your response acceptable.'; diff --git a/src/modals/open-ticket-modal.ts b/src/modals/open-ticket-modal.ts index 59c9c79..174c13a 100644 --- a/src/modals/open-ticket-modal.ts +++ b/src/modals/open-ticket-modal.ts @@ -1,23 +1,31 @@ import { Client, MessageFlags, ModalSubmitInteraction } from 'discord.js'; import { Database } from '../shared/Database'; +import { Modal } from '../types'; import { createPrivateHelpTicketThread } from '../utils'; -export default { - name: 'open-ticket-modal', - handler: async function (client: Client, interaction: ModalSubmitInteraction) { - const guild = await client.guilds.fetch(interaction.guildId!); - const member = await guild.members.fetch(interaction.user.id); +class OpenTicketModal implements Modal { + id = 'open-ticket-modal'; - const guildSettings = await Database.getOrCreateSettings(guild.id); + async execute(context: Client, interaction: ModalSubmitInteraction): Promise { + if (!interaction.inGuild()) return; + await interaction.deferReply({ flags: MessageFlags.Ephemeral }); - if (!guildSettings || !guildSettings.private_help_role_id) - return interaction.reply({ flags: [MessageFlags.Ephemeral], content: 'Failed to create ticket. Please report this to a staff member.' }); + try { + const guild = await context.guilds.fetch(interaction.guildId!); + const member = await guild.members.fetch(interaction.user.id); - const reason = interaction.fields.getTextInputValue('ticket-message'); + const settings = await Database.getOrCreateSettings(interaction.guildId); + if (settings.private_help_role_id) throw new Error("`private_help_role_id` hasn't been configured. Please report this error to staff."); - const thread = await createPrivateHelpTicketThread(client, guild, member, reason); + const reason = interaction.fields.getTextInputValue('ticket-message'); + const thread = await createPrivateHelpTicketThread(context, guild, member, reason); + if (!thread) throw new Error('Failed to create ticket. Please report this to a staff member.'); - if (thread) interaction.reply({ flags: [MessageFlags.Ephemeral], content: `Your ticket has been created: ${thread}` }); - else interaction.reply({ flags: [MessageFlags.Ephemeral], content: 'Failed to create ticket. Please report this to a staff member.' }); + await interaction.editReply({ content: `Your ticket has been created: ${thread}` }); + } catch (error: Error | any) { + await interaction.editReply({ content: error.message }).catch(() => {}); + } } -}; \ No newline at end of file +} + +export default new OpenTicketModal(); \ No newline at end of file