feat: Introduce modular inventory item effect handling and centralize Discord interaction routing.

This commit is contained in:
syntaxbullet
2025-12-24 12:20:42 +01:00
parent f75cc217e9
commit fcc82292f2
6 changed files with 145 additions and 71 deletions

View File

@@ -9,25 +9,19 @@ const event: Event<Events.InteractionCreate> = {
execute: async (interaction) => {
// Handle Trade Interactions
if (interaction.isButton() || interaction.isStringSelectMenu() || interaction.isModalSubmit()) {
if (interaction.customId.startsWith("trade_") || interaction.customId === "amount") {
await import("@/modules/trade/trade.interaction").then(m => m.handleTradeInteraction(interaction));
return;
}
if (interaction.customId.startsWith("shop_buy_") && interaction.isButton()) {
await import("@/modules/economy/shop.interaction").then(m => m.handleShopInteraction(interaction));
return;
}
if (interaction.customId.startsWith("lootdrop_") && interaction.isButton()) {
await import("@/modules/economy/lootdrop.interaction").then(m => m.handleLootdropInteraction(interaction));
return;
}
if (interaction.customId.startsWith("createitem_")) {
await import("@/modules/admin/item_wizard").then(m => m.handleItemWizardInteraction(interaction));
return;
}
if (interaction.customId === "enrollment" && interaction.isButton()) {
await import("@/modules/user/enrollment.interaction").then(m => m.handleEnrollmentInteraction(interaction));
return;
const { interactionRoutes } = await import("./interaction.routes");
for (const route of interactionRoutes) {
if (route.predicate(interaction)) {
const module = await route.handler();
const handlerMethod = module[route.method];
if (typeof handlerMethod === 'function') {
await handlerMethod(interaction);
return;
} else {
console.error(`Handler method ${route.method} not found in module`);
}
}
}
}