Estoy luchando por recuperar en V12 de discord.js el user.id y el user.name para un mensaje que ellos también reaccionan. La idea es que se fije un mensaje y el usuario seleccione entre 1 y 7 cada día y agregue un punto a su total. También restará de su total, si anulan la selección de cualquiera de las reacciones. Pero no he escrito eso todavía. Actualmente falla con TypeError: no se puede leer la propiedad 'gremio' de undefined en const Character cuando se intenta obtener el user.id
config.json
{ "prefix":"!", "channel": "xxx", "channelID": "xxx", }SQLite
client.getdayCount = DB.prepare("SELECT dayCount from Table WHERE id = ?;"); client.setdayCount = DB.prepare("INSERT OR REPLACE INTO Table (id, dayCount, guild) VALUES (@id, @dayCount @guild);");Código principal
client.on('messageReactionAdd', addRole); client.on('messageReactionRemove', removeRole); async function addRole(message, reaction, user) { if (message.partial) { try { await message.fetch(); } catch (err) { console.error('Error fetching message', err); return; } } client.channels.cache.get(config.channelID).messages.fetch({ limit: 1 }).then(messages => { const lastMessage = messages.first() const character = reaction.message.guild.member(user.id); //Filter the reaction const addition = +1; if (lastMessage.reactions.cache.emojis === "1️⃣" || "2️⃣" || "3️⃣" || "4️⃣" || "5️⃣" || "6️⃣" || "7️⃣") { // Define the emoji user add //const character = lastMessage.guild.member(user.id); //reaction.message.guild.member(user.id); if (character) //if author has sent before { character.setdayCount += addition; client.setdayCount.run(character); return; } else //else add new author to collection { character = { id: user.id, setdayCount: addition, guild: reaction.guild.id, } } } else { }; }).catch(err => { console.error(err) }) }Está utilizando parámetros incorrectos para su función, en discord js v12, messageReactionAdd solo tiene dos parámetros, messageReaction y user . Por lo tanto, el parámetro que llamó reaction es en realidad un objeto User que no tiene una propiedad llamada message y causa su error.
Además
if (lastMessage.reactions.cache.emojis === "1️⃣" || "2️⃣" || "3️⃣" || "4️⃣" || "5️⃣" || "6️⃣" || "7️⃣") {siempre será cierto, creo que lo que pretendes hacer es
if (["1️⃣", "2️⃣", "3️⃣", "4️⃣", "5️⃣", "6️⃣", "7️⃣"].includes(lastMessage.reactions.cache.emojis)) {