From f17a3b55214b97fa033cb2a6769c07c6a0d9a506 Mon Sep 17 00:00:00 2001 From: Nix Krystik Date: Wed, 14 Oct 2026 18:18:06 +0800 Subject: [PATCH] (modals): Hook up modals. Pre-testing. --- src/index.ts | 15 +++++++-------- ...em-modal.ts => addKnowledgebaseItemModal.ts} | 0 .../{add-note-modal.ts => addNoteModal.ts} | 0 ...m-modal.ts => editKnowledgebaseItemModal.ts} | 0 src/modals/index.ts | 17 +++++++++++++++++ .../{open-mod-ticket.ts => openModTicket.ts} | 0 ...{open-ticket-modal.ts => openTicketModal.ts} | 0 .../{report-message.ts => reportMessage.ts} | 0 .../{sync-name-modal.ts => syncNameModal.ts} | 0 9 files changed, 24 insertions(+), 8 deletions(-) rename src/modals/{add-knowledgebase-item-modal.ts => addKnowledgebaseItemModal.ts} (100%) rename src/modals/{add-note-modal.ts => addNoteModal.ts} (100%) rename src/modals/{edit-knowledgebase-item-modal.ts => editKnowledgebaseItemModal.ts} (100%) create mode 100644 src/modals/index.ts rename src/modals/{open-mod-ticket.ts => openModTicket.ts} (100%) rename src/modals/{open-ticket-modal.ts => openTicketModal.ts} (100%) rename src/modals/{report-message.ts => reportMessage.ts} (100%) rename src/modals/{sync-name-modal.ts => syncNameModal.ts} (100%) diff --git a/src/index.ts b/src/index.ts index ddb79b0..d5f7e38 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,7 @@ -import { Client, GatewayIntentBits, MessageFlags, Partials } from 'discord.js'; +import { Client, GatewayIntentBits, MessageFlags, ModalSubmitInteraction, Partials } from 'discord.js'; import { config } from './config'; import events from './events'; +import modals from './modals'; import { Database } from './shared/Database'; import { openRedisClient } from './shared/RedisClient'; import { Handler } from './types'; @@ -38,7 +39,6 @@ const client = new Client({ const commands: Handler[] = []; const contextMenus: Handler[] = []; const buttons: Handler[] = []; -const modals: Handler[] = []; const menus: Handler[] = []; // Due to their reliance on each other, these two events (interactionCreate, and ready) have to stay here. @@ -103,10 +103,11 @@ client.on('interactionCreate', async (interaction) => { const id = interaction.customId.split('_')[0]; for (const modal of modals) { - if (id == modal.name) { - modal.handler(client, interaction, ...interaction.customId.split('_').slice(1)); - return; - } + if (id != modal.id) continue; + + Promise.resolve((modal.execute as (context: Client, interaction: ModalSubmitInteraction, ...args: unknown[]) => Promise)(client, interaction, ...interaction.customId.split('_').slice(1)) + .catch(e => console.error('An error occurred while handling a modal interaction: ', e))); + return; } } else if (interaction.isAnySelectMenu()) { // Handle menu selections. @@ -127,14 +128,12 @@ client.on('clientReady', async () => { await loadHandlersFrom('commands', commands); await loadHandlersFrom('context-menus', contextMenus); await loadHandlersFrom('buttons', buttons); - await loadHandlersFrom('modals', modals); await loadHandlersFrom('menus', menus); await refreshCommands(client); await initIfNecessary(client, commands); await initIfNecessary(client, buttons); - await initIfNecessary(client, modals); await initIfNecessary(client, menus); Encrypter.initialize(config.DATABASE_SECRET!); diff --git a/src/modals/add-knowledgebase-item-modal.ts b/src/modals/addKnowledgebaseItemModal.ts similarity index 100% rename from src/modals/add-knowledgebase-item-modal.ts rename to src/modals/addKnowledgebaseItemModal.ts diff --git a/src/modals/add-note-modal.ts b/src/modals/addNoteModal.ts similarity index 100% rename from src/modals/add-note-modal.ts rename to src/modals/addNoteModal.ts diff --git a/src/modals/edit-knowledgebase-item-modal.ts b/src/modals/editKnowledgebaseItemModal.ts similarity index 100% rename from src/modals/edit-knowledgebase-item-modal.ts rename to src/modals/editKnowledgebaseItemModal.ts diff --git a/src/modals/index.ts b/src/modals/index.ts new file mode 100644 index 0000000..83fed70 --- /dev/null +++ b/src/modals/index.ts @@ -0,0 +1,17 @@ +import addKnowledgebaseItemModal from './addKnowledgebaseItemModal'; +import addNoteModal from './addNoteModal'; +import editKnowledgebaseItemModal from './editKnowledgebaseItemModal'; +import openModTicket from './openModTicket'; +import openTicketModal from './openTicketModal'; +import reportMessage from './reportMessage'; +import syncNameModal from './syncNameModal'; + +export default [ + addKnowledgebaseItemModal, + addNoteModal, + editKnowledgebaseItemModal, + openModTicket, + openTicketModal, + reportMessage, + syncNameModal +]; \ No newline at end of file diff --git a/src/modals/open-mod-ticket.ts b/src/modals/openModTicket.ts similarity index 100% rename from src/modals/open-mod-ticket.ts rename to src/modals/openModTicket.ts diff --git a/src/modals/open-ticket-modal.ts b/src/modals/openTicketModal.ts similarity index 100% rename from src/modals/open-ticket-modal.ts rename to src/modals/openTicketModal.ts diff --git a/src/modals/report-message.ts b/src/modals/reportMessage.ts similarity index 100% rename from src/modals/report-message.ts rename to src/modals/reportMessage.ts diff --git a/src/modals/sync-name-modal.ts b/src/modals/syncNameModal.ts similarity index 100% rename from src/modals/sync-name-modal.ts rename to src/modals/syncNameModal.ts