Hola, estoy tratando de cargar archivos dentro de diferentes carpetas, por ejemplo.
-- Main directory -- bot folder - index.js - package.json - package-lock.json -- commands -- fun - kick.js - ban.js -- some other categorySin embargo, en mi código, solo parece que puedo cargar los archivos .js en la carpeta Comandos en lugar de las subcarpetas.
Aquí está el código con el que estoy trabajando:
const commandFiles = fs.readdirSync("../main/Commands") .filter(file => file.endsWith(".js")); const commands = commandFiles.map(file => require(`../Commands/${file}`)); commands.forEach(cmd => { console.log(`Command ${cmd.name} loaded`); this.commands.set(cmd.name, cmd); });Ayuda apreciada.
Puede crear varias colecciones, una para cada una de sus subcarpetas. Esto es lo que he hecho para mi bot, y funciona perfectamente:
client.commandsAdmin = new Discord.Collection(); client.commandsUser = new Discord.Collection(); const commandsAdminFiles = fs.readdirSync('./commands/admin').filter(file => file.endsWith('.js')); const commandsUserFiles = fs.readdirSync('./commands/user').filter(file => file.endsWith('.js')); for(const file of commandsAdminFiles){ const command = require(`./commands/admin/${file}`); client.commandsAdmin.set(command.name, command); } for(const file of commandsUserFiles){ const command = require(`./commands/user/${file}`); client.commandsUser.set(command.name, command); } Al procesar el comando en su código, debe verificar si pertenece a una de las colecciones, luego averiguar qué colección contiene el comando y luego usar client.commandsFun.get(command).execute(...) para ejemplo, si el comando pertenece a la subcarpeta 'fun'.