He encontrado en otras preguntas de desbordamiento de pila que para agregar alias solo tienes que agregar
const command = client.commands.get(commandName) || client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName)); pero esto no funciona. Lo que no entiendo es qué es cmd porque no está definido en ningún otro lugar de mi código, aunque de todos modos se pasa a través de la función de flecha. Cuando uso esto, todavía puedo usar los comandos, pero cuando uso los alias, no pasa nada, no hay ningún mensaje o error en la consola. Alguien podría ayudarme con esto, gracias por cualquier ayuda. Aquí está mi código para el controlador de comandos:
client.on('messageCreate', message => { if (message.author.bot) return; if (!message.content.startsWith(process.env.PREFIX)) return; const args = message.content.slice(process.env.PREFIX.length).trim().split(/ +/); const commandName = args.shift().toLowerCase(); const command = client.commands.get(commandName) || client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName)); if (!client.commands.has(commandName)) return; if (message.channel.name == 'general') return message.reply('smh no bot commands in general :raised_hand:'); if (!message.guild.me.permissions.has('SEND_MESSAGES')) return message.member.send(`I need the 'SEND_MESSAGES' permission to be able to reply to commands in the server: ${message.guild.name}`); try { command.execute(message, args, distube); } catch(error) { console.error(error); message.reply('Uh oh! It looks like you have encountered a glitch up in the system, please try again later! || <@498615291908194324> fix yo dead bot ||') }});
Y el archivo de comandos:
name: 'ping', description: 'Ping Command', aliases: ['pg'], execute(message, args) { let ping = new Date().getTime() - message.createdTimestamp message.reply(`pong (${ping}ms)`); }Esta linea es el problema
if (!client.commands.has(commandName)) return; Mapea la colección en un formato <string, Object> pero la cadena es el nombre del comando, no el alias. La mejor manera es reemplazar la línea de código anterior con esto:
if (!command) return; Esto regresará temprano si el command es falso (no se encontró), pero funcionará con alias.