module.exports = { name: 'interactionCreate', once: false, async execute(interaction, client) { try { // Slash commands if (interaction.isChatInputCommand()) { const command = client.commands.get(interaction.commandName); if (command) return command.execute(interaction, client); } // Buttons if (interaction.isButton()) { for (const button of client.buttons.values()) { if ( typeof button.id === 'string' && button.id === interaction.customId ) { return button.execute(interaction, client); } if ( button.id instanceof RegExp && button.id.test(interaction.customId) ) { return button.execute(interaction, client); } } } // Modals if (interaction.isModalSubmit()) { for (const modal of client.modals.values()) { if ( typeof modal.id === 'string' && modal.id === interaction.customId ) { return modal.execute(interaction, client); } if ( modal.id instanceof RegExp && modal.id.test(interaction.customId) ) { return modal.execute(interaction, client); } } } // Menus if ( interaction.isStringSelectMenu() || interaction.isUserSelectMenu() || interaction.isRoleSelectMenu() || interaction.isChannelSelectMenu() ) { for (const menu of client.menus.values()) { if (typeof menu.id === 'string' && menu.id === interaction.customId) { return menu.execute(interaction, client); } if (menu.id instanceof RegExp && menu.id.test(interaction.customId)) { return menu.execute(interaction, client); } } } } catch (error) { console.error(error); if (interaction.replied || interaction.deferred) { await interaction.followUp({ content: '❌ Une erreur est survenue.', flags: 64, }); } else { await interaction.reply({ content: '❌ Une erreur est survenue.', flags: 64, }); } } }, };