import { DebugBuilder } from "../../modules/debugger.mjs"; const log = new DebugBuilder("server", "discordBot.events.interactionCreate"); import { Events } from "discord.js"; import PresenceManager from "../modules/presenceManager.mjs"; export const name = Events.InteractionCreate; export async function execute(nodeIo, interaction) { const command = interaction.client.commands.get(interaction.commandName); log.INFO("Interaction created for command: ", command); // Set the presence for handling interaction const interactionPm = new PresenceManager(interaction.client); await interactionPm.setPresence("online", "PLAYING", "handling interaction"); // Execute autocomplete if the user is checking autocomplete if (interaction.isAutocomplete()) { log.INFO("Running autocomplete for command: ", command.data.name); return await command.autocomplete(nodeIo, interaction); } // Check if the interaction is a command if (!interaction.isChatInputCommand()) return; if (!command) { console.error(`No command matching ${interaction.commandName} was found.`); return; } log.INFO( `${interaction.member.user} is running '${interaction.commandName}'`, ); // Defer the initial reply if the command has the parameter set if (command.deferInitialReply) { await interaction.deferReply(); } // Execute the command command.execute(nodeIo, interaction); // Reset the presence await interactionPm.resetToDefault(); }