const { Client, Collection, Intents } = require('discord.js'); const { REST } = require('@discordjs/rest'); const { Routes } = require('discord-api-types/v9'); const fs = require('fs'); const console = require('./functions/meta/console'); const client = new Client({ intents: [Intents.FLAGS.GUILDS], }); client.commands = new Collection(); const commandFolders = fs.readdirSync('./commands'); const commands = []; const commandsData = { guild: [], perGuild: [], global: [], }; for (const folder of commandFolders) { const commandFiles = fs.readdirSync(`./commands/${folder}`).filter(file => file.endsWith('.js')); for (const file of commandFiles) { const command = require(`./commands/${folder}/${file}`); if(command.properties) command.properties.folder = folder; else command.properties = { folder: folder }; if(!command.properties.guild) command.properties.guild = process.env.DEV_GUILD; commands.push(command); if(command.properties.type.includes('guild')) { commandsData.guild.push(command.data.toJSON()); } if(command.properties.type.includes('per-guild')) { commandsData.perGuild.push(command.data.toJSON()); } if(command.properties.type.includes('per-guild')) { commandsData.global.push(command.data.toJSON()); } } } const rest = new REST({ version: '9', }).setToken(process.env.TOKEN); module.exports = { commands, commandsData, rest }; (async () => { try { await rest.put( Routes.applicationGuildCommands(process.env.CLIENT, process.env.DEV_GUILD), { body: commandsData.guild, }, ); } catch (error) { console.error(error); } })(); const eventFolders = fs.readdirSync('./events'); for (const folder of eventFolders) { const eventFiles = fs.readdirSync(`./events/${folder}`).filter(file => file.endsWith('.js')); for (const file of eventFiles) { const event = require(`./events/${folder}/${file}`); if (event.once) { client.once(event.name, (...args) => { console.system(`New event fired: ${event.name}`); event.execute(...args, client); console.system(`Event finished: ${event.name}`); }); } else { client.on(event.name, (...args) => { console.system(`New event fired: ${event.name}`); event.execute(...args, client); console.system(`Event finished: ${event.name}`); }); } } } client.login(process.env.TOKEN);