Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

236
Vistas
El controlador de comandos Discord.JS no funciona o no se actualiza

Estoy tratando de agregar un controlador de comandos a mi bot, sin embargo, solo funciona un comando y no importa cómo cambie el comando, no se actualiza. Aquí está mi código.

Esto está en la parte superior debajo de los paquetes y encima del código listo.

 fs.readdir('./commands/', (_err, files) => { files.forEach((file) => { if (!file.endsWith('.js')) return; bot.commands = new Discord.Collection() let command = require(`./commands/${file}`); // access all details though this variable bot.commands.set(command.name, command); console.log(`👌 Command loaded: ${command.name}`); }); });

Esto está en el comando de recursos.

 const Discord = require("discord.js") const fs = require("fs") module.exports = { name: 'resources', // any other details you might like, such as: description: 'Shows resources', execute(bot, message, args, prefix) { // the actual function let resourceText = fs.readFileSync('txtfiles/resources.txt', 'utf8') message.suppressEmbeds(true) message.channel.send(resourceText) } }

El comando de recursos funciona bien, pero el comando de envío no.

 const Discord = require("discord.js") const fs = require("fs") module.exports = { name: 'ship', // any other details you might like, such as: description: 'ships people', execute(bot, message, args, prefix) { // the actual function message.channel.send("please work") } }

Y esto está en la cosa "on messageCreate"

 if(cmd===`${prefix}resources`){bot.commands.get('resources').execute(bot, message, args, prefix);} if(cmd===`${prefix}ship`){bot.commands.get('ship').execute(bot, message, args, prefix);}

He intentado poner estos debajo de los paquetes.

 delete require.cache['./index.js']; delete require.cache[require.resolve('./index.js')]

Sin embargo, recibo este mensaje de error Unhandled promise rejection: TypeError: Cannot read properties of undefined (reading 'execute')

El comando de recursos funciona bien, incluso si eliminamos todo el código del archivo, y el comando de envío no funciona en absoluto.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Entonces, en lugar de poner un bloque if (cmd === para cada comando, intente usar uno dinámico que no requiera que actualice su sección messageCreate , cada vez que agregue un nuevo comando o elimine uno.

Sección MessageCreate:

 bot.on('messageCreate', async message => { if (message.author.bot) return if (!message.content.startsWith(config.prefix)) return const args = message.content.slice(config.prefix.length).trim().split(/ +/) const command = args.shift().toLowerCase() const cmd = bot.commands.get(command) if (!cmd) { console.log("Unknown command") return } else { cmd.run(bot, message, args) } })

Luego, tendrá que actualizar su comando existente que funciona para que coincida con este estilo, pero simplemente haga otros nuevos como este:

 module.exports = { name: 'Command Name', description: 'Command description', run: async (bot, message, args) => { // the actual function } }

Entonces el comando de tu ships se vería así

 module.exports = { name: 'ships', description: 'ships people', run: async (bot, message, args) => { message.channel.send({ content: 'Please work' }) } }

Cambiaría tu colección de comandos a esto

 bot.commands = new Discord.Collection() const commandList = [] const commands = fs.readdirSync('./commands/').filter(file => file.endsWith('.js')) for (const file of commands) { const command = require(`./commands/${file}`) commandList.push(`${file.split('.'[0])}`) bot.commands.set(command.name, command) } console.log(`👌 Commands loaded: ${commandList}`)
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda