Estoy tratando de verificar dinámicamente las reacciones en el mensaje que se respondió, y funciona bien cuando pego la identificación del mensaje literal, pero cuando lo asigno a una variable, da un TypeError: Cannot read properties of null (reading 'usuarios') .
Utilicé msg.fetchReference() para obtener el mensaje de referencia y está asignado repliedTo . Confirmé repliedTo.id proporciona la identificación que funcionó cuando la pegué y que la variable devuelve una cadena.
cacheChannel.messages.fetch(repliedTo.id).then(reactionMessage => { reactionMessage.reactions.resolve('📌').users.fetch().then(userList => { userList.map((user) => { if (user.id === 'testID') { console.log('already reacted'); } }); }); }); Nota al margen: Originalmente probé esto sin intentar obtener el mensaje tal como está ahora, y solo repliedTo en lugar de reactionMessage , pero tuve el mismo problema.
¡En su código está usando === que también verifica si x1 y x2 tienen los mismos tipos de datos! Como dijiste, la variable te devuelve una String , cuando user.id es un Number , por lo que recomendaría intentar cambiar === a == , ¡que solo verifica el valor! También aquí hay una explicación de cómo funciona!
Entonces, ¿el problema es que cuando la identificación se mezcla con letras da un error? Puede usar isNaN function para devolverlo si la identificación no tiene ningún número o si la identificación se mezcló con letras.
cacheChannel.messages.fetch(repliedTo.id).then(reactionMessage => { reactionMessage.reactions.resolve('📌').users.fetch().then(userList => { userList.map((user) => { if(isNaN(user.id)) { return message.reply("Your_Message") } else if (user.id === 'testID') { console.log('already reacted'); } }); }); }); O puede usar la función try {} catch {} .
cacheChannel.messages.fetch(repliedTo.id).then(reactionMessage => { reactionMessage.reactions.resolve('📌').users.fetch().then(userList => { userList.map((user) => { try { if (user.id === 'testID') { console.log('already reacted'); } } catch { return message.reply("Your_Message") } }); }); });