// https://gist.github.com/himanshuxd/3855d2699ed795279bba534e4ddc52f5 // https://discord.js.org/#/docs/discord.js/main/general/welcome // Fundementals built follow the v13 guide, while on v14 // https://discordjs.guide/creating-your-bot/#creating-the-main-file // For commands in different files const fs = require('node:fs'); const path = require('node:path'); // Require the necessary discord.js classes const { Client, GatewayIntentBits, Partials, InteractionType } = require('discord.js'); // Create a new client instance const client = new Client({ intents: [GatewayIntentBits.Guilds], partials: [Partials.Channel] }); // Add config file const config = require('./config.json'); // Commands in seperate files client.commands = new Map(); const commandsPath = path.join(__dirname, 'commands'); const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js')); for (const file of commandFiles) { const filePath = path.join(commandsPath, file); const command = require(filePath); // Set a new item in the Collection // With the key as the command name and the value as the exported module client.commands.set(command.data.name, command); } // Events in seperate files const eventsPath = path.join(__dirname, 'events'); const eventFiles = fs.readdirSync(eventsPath).filter(file => file.endsWith('.js')); for (const file of eventFiles) { const filePath = path.join(eventsPath, file); const event = require(filePath); if (event.once) { client.once(event.name, (...args) => event.execute(...args)); } else { client.on(event.name, (...args) => event.execute(...args)); } } // Interactions client.on('interactionCreate', async interaction => { if (!interaction.type === InteractionType.ApplicationCommand) return; const command = client.commands.get(interaction.commandName); if (!command) return; try { await command.execute(interaction); } catch (error) { console.error(error); await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }); } }); // Login to Discord with your client's token client.login(config.token);