Estoy codificando un bot de discord con discord.js, y una de las características es que cuando alguien envía un mensaje con el prefijo ( .exe ) con una palabra justo después (por ejemplo .exebot o .exeserverinv ), el bot devuelve un mensaje específico mensaje. El código funciona bien, pero sé que simplemente copiar y pegar el mismo código más de 30 veces y simplemente cambiar los valores no es una buena optimización.
¿Hay alguna manera simple de hacerlo para que pueda usar un bucle o algo así para que el comando se repita, pero con diferentes valores?
Aquí está el código no optimizado:
command(client, 'command name', message => { message.channel.send('bot message') }) command(client, 'random', message =>{ message.channel.send('some text') }) command(client, 'bot', message =>{ message.channel.send('random text') }) command(client, 'testing', message =>{ message.channel.send('text') }) command(client, 'test', message =>{ message.channel.send('example text') }) command(client, 'second to last test', message =>{ message.channel.send('is almost there') }) command(client, 'last test', message =>{ message.channel.send('is the very last one') })El controlador de comandos desde el que se ejecuta este comando es:
const { prefix } = require('./config.json') module.exports = (client, aliases, callback) => { if (typeof aliases === 'string') { aliases = [aliases] } client.on('message', message => { const { content } = message; aliases.forEach(alias => { const command = `${prefix}${alias}` if (content.startsWith(`${command} `) || content === command) { console.log(`Running the command ${command}`) callback(message) } }) }) }Por favor avise.
Puede usar la notación de objetos de JavaScript y asignar los nombres de los comandos a las respuestas.
const commandToReply = { "command name": "bot message", "random": "some text", "bot": "random text", "testing": "text", "test": "example text", "second to last test": "is almost there", "last test": "is the very last one" }; for (const [name, reply] of Object.entries(commandToReply)) { command(client, name, (message) => { message.channel.send(reply); }); } Para iterar a través del objeto, observe cómo funciona Object.entries() .