forked from syntaxbullet/AuroraBot-discord
feat: Introduce modular inventory item effect handling and centralize Discord interaction routing.
This commit is contained in:
@@ -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`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user