Files
qcstd-bot/events/guilds/interactionCreate.js

80 lines
2.2 KiB
JavaScript

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,
});
}
}
},
};