52 lines
1.8 KiB
JavaScript
52 lines
1.8 KiB
JavaScript
const { Events } = require('discord.js');
|
|
const { authorizeCommand } = require('../middleware/discordAuthorization');
|
|
const { authorizeTokenUsage } = require('../middleware/balanceAuthorization');
|
|
|
|
const { DebugBuilder } = require("../utilities/debugBuilder");
|
|
const log = new DebugBuilder("server", "interactionCreate");
|
|
|
|
module.exports = {
|
|
name: Events.InteractionCreate,
|
|
async execute(interaction) {
|
|
if (!interaction.isChatInputCommand()) return;
|
|
|
|
const command = interaction.client.commands.get(interaction.commandName);
|
|
|
|
if (!command) {
|
|
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 () => {
|
|
try {
|
|
if (command.deferInitialReply) {
|
|
try {
|
|
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;
|
|
}
|
|
|
|
}
|
|
}
|
|
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 });
|
|
}
|
|
}
|
|
})
|
|
});
|
|
},
|
|
}; |