Estoy tratando de recopilar un mensaje después de un determinado mensaje que un usuario ha enviado en un canal específico. Entonces, el usuario enviaría hello world y luego los mensajes de espera esperarían una respuesta de un usuario específico y tomarían la identificación de ese mensaje. Sin embargo, no funciona.
Aquí está mi código:
let filter = message => { return message.author.id == 'ID OF USER'; } if(message.channel.id == 'channel id of sent message') { console.log('here'); if(message.content.valueOf("hello world")) { console.log('here'); message.channel.awaitMessages(bumpFilter, { max: 1, time: 5000, errors: ['time']}) .then(c => { console.log('here'); console.log(c); }); } } En la consola, here se registra 2 veces. Sin embargo, la tercera vez no se registra, incluso después de que hayan pasado 5 segundos desde este mensaje. La consola no registra nada, ni siquiera un error, lo que me hizo especular que tal vez sea un problema de intentos de discordia, pero tampoco creo que haya sido eso. Así que no entiendo cuál es el problema y por qué no obtengo ningún resultado. Además, si message.channel.awaitMessages(...) a una var y luego registré la var , generaría Promise { <pending> } y leí que se debe agregar una declaración .then para evitar eso. Y ahora que se agrega, todavía no genera nada.
Primero, if (message.content.valueOf("hello world")) siempre devolverá verdadero ya que el método valueOf devuelve el valor primitivo del objeto especificado. Incluso si message.content no es "hello world" , sigue siendo veraz. Debe verificar si el valor de message.content en sí mismo es igual a "hello world" .
En segundo lugar, declara una variable de filter pero usa bumpFilter en sus awaitMessages
Y tercero, en discord.js v13, awaitMessages acepta un solo parámetro, un objeto de opciones . (En v12 el primer parámetro era un filtro y el segundo son las opciones).
let filter = (message) => { return message.author.id === 'ID OF USER'; }; if (message.channel.id === 'channel id of sent message') { console.log('channel matches'); if (message.content === 'hello world') { console.log('message is hello world'); message.channel .awaitMessages({ filter, max: 1, time: 5000, errors: ['time'] }) .then((c) => { console.log('New message collected'); console.log(c); }) .catch((c) => console.log(`After five seconds, ${c.size} messages are collected.`), ); } }