src/events/interactionCreate.ts (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
import { type BaseInteraction, type Client, Events } from "discord.js";
import { commands } from "../handlers/interactions";
import { logger as eventLogger } from "../handlers/events";
const logger = eventLogger.child("interactionCreate");
export default {
event: Events.InteractionCreate,
async execute(client: Client, interaction: BaseInteraction) {
if (interaction.isCommand()) {
const command = commands.get(interaction.commandName);
logger.info(`received command ${interaction.commandName}`);
if (!command) return;
try {
await command.execute(client, interaction);
} catch (error) {
logger.error(
`there was an error while executing ${interaction.commandName}`,
error,
);
interaction.deferReply({ flags: ["Ephemeral"] });
await interaction.followUp({
content: "there was an error while executing this command!",
flags: ["Ephemeral"],
});
}
} else if (interaction.isButton()) {
const [commandName, ..._args] = interaction.customId.split(":");
const command = commands.get(commandName);
if (!command || !command.buttonExecute) {
return interaction.reply({
content: "couldn't find the associated command!",
flags: ["Ephemeral"],
});
}
try {
await command.buttonExecute(client, interaction);
} catch (error) {
logger.error(
`there was an error while executing button with customId ${interaction.customId}`,
error,
);
await interaction.reply({
content: "there was an error while executing this button command!",
flags: ["Ephemeral"],
});
}
} else if (interaction.isModalSubmit()) {
const [commandName, ..._args] = interaction.customId.split(":");
const command = commands.get(commandName);
if (!command || !command.modalExecute) return;
try {
await command.modalExecute(client, interaction);
} catch (error) {
logger.error(
`there was an error while executing modal with customId ${interaction.customId}`,
error,
);
await interaction.reply({
content: "there was an error while executing this modal!",
flags: ["Ephemeral"],
});
}
} else if (interaction.isAutocomplete()) {
const command = commands.get(interaction.commandName);
if (!command || !command.autocomplete) return;
try {
await command.autocomplete(interaction);
} catch (error) {
logger.error(
`there was an error while executing autocomplete command for ${interaction.commandName}`,
error,
);
}
} else if (interaction.isStringSelectMenu()) {
const command = commands.get(interaction.customId.split(":")[0]);
if (!command || !command.selectMenuExecute)
return interaction.reply({
content: "couldn't find the associated command!",
flags: ["Ephemeral"],
});
try {
await command.selectMenuExecute(client, interaction);
} catch (error) {
logger.error(
`there was an error while executing select menu with customId ${interaction.customId}`,
error,
);
await interaction.reply({
content: "there was an error while executing this select menu!",
flags: ["Ephemeral"],
});
}
}
},
};
|