Estoy tratando de crear un recopilador que recopile el mensaje del usuario mencionado. ¡Pero incluso con el filtro, mi bot responde a su propio mensaje y a los mensajes de otras personas! Aquí está mi código de archivo test.js :
const mentioned = message.mentions.users.first(); const filter1 = (msg) => { return msg.author.id === mentioned.id } const collector1 = await message.channel.createMessageCollector({ filter1, max: 1, time: 120000 }) collector1.on('collect', message => { console.log(message.content) }) collector1.on('end', (collected) => { if (collected.size === 0) return message.channel.send("Mentioned user did not respond in time!") collected.forEach((message) => { if (message.content.toLowerCase() == 'accept') { message.channel.send(`${mentioned} accepted!`) } if (message.content.toLowerCase() == 'cancel') return message.channel.send(`${mentioned} declined!`) }) })Estuve cambiando mi filtro muchas veces, pero todavía no puedo solucionar este problema, entonces, ¿qué estoy haciendo mal? También uso djs v13
El problema es que está tratando de usar la asignación de propiedad abreviada para asignar la opción de filter . Sin embargo, pasa " filter1 " que da como resultado {filter1: filter1} . Dado que esto no se resuelve en una opción de filter para TextChannel#createMessageCollector() , el método ignora la opción desconocida y, por lo tanto, su recopilador no tiene filtro.
Cambie su variable filter1 para filter
const filter = (msg) => { return msg.author.id === mentioned.id } const collector1 = await message.channel.createMessageCollector({ filter, max: 1, time: 120000 })