Allow commands to use autocomplete

This commit is contained in:
Logan Cusano
2023-06-03 23:31:27 -04:00
parent 7d8ad68e27
commit 8ab611836b

View File

@@ -8,45 +8,53 @@ const log = new DebugBuilder("server", "interactionCreate");
module.exports = { module.exports = {
name: Events.InteractionCreate, name: Events.InteractionCreate,
async execute(interaction) { async execute(interaction) {
const command = interaction.client.commands.get(interaction.commandName);
log.VERBOSE("Interaction for command: ", command);
// Execute autocomplete if the user is checking autocomplete
if (interaction.isAutocomplete()) {
log.DEBUG("Running autocomplete for command: ", command.data.name);
return await command.autocomplete(interaction);
}
// Check if the interaction is a command
if (!interaction.isChatInputCommand()) return; if (!interaction.isChatInputCommand()) return;
const command = interaction.client.commands.get(interaction.commandName); if (!command) {
log.ERROR(`No command matching ${interaction.commandName} was found.`);
return;
}
if (!command) { log.DEBUG(`${interaction.member.user} is running '${interaction.commandName}'`);
log.ERROR(`No command matching ${interaction.commandName} was found.`);
return;
}
log.DEBUG(`${interaction.member.user} is running '${interaction.commandName}'`); await authorizeCommand(interaction, command, async () => {
await authorizeTokenUsage(interaction, command, undefined, async () => {
await authorizeCommand(interaction, command, async () => { try {
await authorizeTokenUsage(interaction, command, undefined, async () => { if (command.deferInitialReply) {
try { try {
if (command.deferInitialReply) { if (interaction.options.getBool('public') && interaction.options.getBool('public') == false) await interaction.deferReply({ ephemeral: true });
try { else await interaction.deferReply({ ephemeral: false });
if (interaction.options.getBool('public') && interaction.options.getBool('public') == false) await interaction.deferReply({ ephemeral: true });
else await interaction.deferReply({ ephemeral: false });
}
catch (err) {
if (err instanceof TypeError) {
// The public option doesn't exist in this command
await interaction.deferReply({ ephemeral: false });
} else {
throw err;
} }
catch (err) {
if (err instanceof TypeError) {
// The public option doesn't exist in this command
await interaction.deferReply({ ephemeral: false });
} else {
throw err;
}
}
}
command.execute(interaction);
} catch (error) {
log.ERROR(error);
if (interaction.replied || interaction.deferred) {
interaction.followUp({ content: 'There was an error while executing this command!', ephemeral: true });
} else {
interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true });
} }
}
command.execute(interaction);
} catch (error) {
log.ERROR(error);
if (interaction.replied || interaction.deferred) {
interaction.followUp({ content: 'There was an error while executing this command!', ephemeral: true });
} else {
interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true });
} }
} })
}) });
});
}, },
}; };