diff --git a/bot.js b/bot.js index 620168d..e3aacd1 100644 --- a/bot.js +++ b/bot.js @@ -12,57 +12,63 @@ const path = require('node:path'); const { Client, Collection, Events, GatewayIntentBits } = require('discord.js'); const client = new Client({ - intents: [ - GatewayIntentBits.Guilds, - GatewayIntentBits.GuildMessages, - GatewayIntentBits.MessageContent, - ] + intents: [ + GatewayIntentBits.Guilds, + GatewayIntentBits.GuildMessages, + GatewayIntentBits.MessageContent, + ], }); client.commands = new Collection(); const commandsPath = path.join(__dirname, 'commands'); const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js')); -for (const file of commandFiles) { +const logger = message => process.stdout.write(`${message}\n`); + +await Promise.all( + commandFiles.map(async file => { const filePath = path.join(commandsPath, file); - const command = require(filePath); + const command = await import(`file://${filePath}`); if ('data' in command && 'execute' in command) { - client.commands.set(command.data.name, command); + client.commands.set(command.data.name, command); } else { - console.log(`[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`); + logger( + `[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`, + ); } -} + }), +); client.once(Events.ClientReady, () => { - console.log(`Ready! Logged in as ${client.user.tag}`); + console.log(`Ready! Logged in as ${client.user.tag}`); }); client.on(Events.InteractionCreate, async interaction => { - if (!interaction.isChatInputCommand()) return; + if (!interaction.isChatInputCommand()) return; - const command = client.commands.get(interaction.commandName); + const command = client.commands.get(interaction.commandName); - if (!command) { - console.error(`No command matching ${interaction.commandName} was found.`); - return; - } - - try { - await command.execute(interaction); - } catch (error) { - console.error(error); - if (interaction.replied || interaction.deferred) { - await interaction.followUp({ - content: 'There was an error while executing this command!', - ephemeral: true - }); - } else { - await interaction.reply({ - content: 'There was an error while executing this command!', - ephemeral: true - }); - } + if (!command) { + console.error(`No command matching ${interaction.commandName} was found.`); + return; + } + + try { + await command.execute(interaction); + } catch (error) { + console.error(error); + if (interaction.replied || interaction.deferred) { + await interaction.followUp({ + content: 'There was an error while executing this command!', + ephemeral: true, + }); + } else { + await interaction.reply({ + content: 'There was an error while executing this command!', + ephemeral: true, + }); } + } }); client.login(process.env.DISCORD_TOKEN);