Tenía un código antiguo, que hice durante la V12 de discord.js, que funcionaba correctamente. El código me falló recientemente al cambiar la mayoría de las cosas requeridas para cambiar (cosas que habían cambiado para v13) e hice una versión más simplificada para ver cuál era el problema y parece que el mensaje se envió al bot, en lugar de cualquier persona que reaccionó al mensaje.
const { client, message } = require("discord.js") module.exports = { name: "collect", description: "--", category: "info", async execute(message, args, client) { const newMsg = await message.channel.send("words") newMsg.react("✅") const filter = (reaction, user) => { return !user.bot }; const collector = newMsg.createReactionCollector(filter, { time: 6000000 }); collector.on('collect', (reaction, user) => { user.send("it worked") }); } }Este es el código, donde quiero que el bot cree un mensaje, cree una reacción a continuación y permita que el usuario reaccione, para que pueda obtener la identificación del usuario y enviarle un mensaje.
Sin embargo, una vez que ejecuto el código, envía el mensaje, crea la reacción y arroja este error a continuación;
DiscordAPIError: Cannot send messages to this user at RequestHandler.execute (E:\Github\Valorant-Curios-Tournaments\node_modules\discord.js\src\rest\RequestHandler.js:350:13) at processTicksAndRejections (node:internal/process/task_queues:96:5) at async RequestHandler.push (E:\Github\Valorant-Curios-Tournaments\node_modules\discord.js\src\rest\RequestHandler.js:51:14) at async UserManager.createDM (E:\Github\Valorant-Curios-Tournaments\node_modules\discord.js\src\managers\UserManager.js:58:18) at async ClientUser.send (E:\Github\Valorant-Curios-Tournaments\node_modules\discord.js\src\structures\interfaces\TextBasedChannel.js:162:18) { method: 'post', path: '/users/852994509628768298/channels', code: 50007, httpStatus: 400, requestData: { json: { recipient_id: '852994509628768298' }, files: [] } }La identificación del destinatario es la misma que la identificación del bot, por lo que asumo que no está filtrando la identificación del bot con el filtro;
const filter = (reaction, user) => { return !user.bot === message.author.id; };Cualquier ayuda sería apreciada, gracias.
No importa, soy muy tonto
El filtro está en el objeto.
const collector = newMsg.createReactionCollector(filter, { time: 6000000 });para arreglar esto, solo necesitaba hacerlo
const collector = newMsg.createReactionCollector({filter, time: 6000000 });