Actualmente estoy desarrollando un bot discord.js en la última versión. Actualmente estoy tratando de obtener el siguiente fragmento de código para enviar un mensaje con instrucciones sobre qué decir, luego, una vez que recibo una respuesta, envío otro mensaje. sin embargo, no puedo hacer que funcione. ¡Cualquier ayuda sería apreciada!
client.on('messageCreate', message => { //check if message is from self if (message.author === client.user) { //if it is. do nothing return } else { //if its not, read message if (message.content === prefix + "start") { let filter = m => m.author.id === message.author.id message.channel.send("Testing.. Type YES or NO").then(() => { message.channel .awaitMessages(filter, { max: 1, time: 30000, errors: ['time'] }) .then(message => { message = message.first() if (message.content.toUpperCase() == 'YES' || message.content.toUpperCase() == 'Y') { message.channel.send(`Hello World!`); } else if (message.content.toUpperCase() == 'NO' || message.content.toUpperCase() == 'N') { message.channel.send(`Ping`); } else { message.channel.send(`Terminated: Invalid Response`); } }) .catch(collected => { message.channel.send('Timeout'); }); }) } } });Problemas de alcance. El resultado de su promesa awaitMessages() se llama message . Sin embargo, el alcance externo de la función en sí también tiene un message con nombre de variable, por lo tanto, está haciendo referencia a cosas diferentes:
// from client.on("messageCreate", message) message.channel.awaitMessages(filter, { max: 1, time: 30000, errors: ['time'] }) // not the same; from awaitMessages() instead .then(message => { message = message.first() })Puedes arreglarlo haciendo esto:
message.channel.awaitMessages(filter, { max: 1, time: 30000, errors: ['time'] }) // we call it 'collected' as we essentially collect a message .then(collected => { // redeclare a new variable named 'msg' const msg = collected.first() if (msg.content.toUppercase() == "YES" || msg.content.toUppercase() == "Y") { msg.channel.send(`Hello World!`); } else if (...)Obtienes la esencia aquí.