Estoy usando discord.js v13 y recibo el siguiente error cuando intento usar la presencia de miembros para verificar su estado:
Error:
TypeError: Cannot read properties of null (reading 'status') at /home/runner/DinBot-Slash-CMDS/slashcmds/utilidad/serverinfo.js:59:76 at Map.filter (/home/runner/DinBot-Slash-CMDS/node_modules/discord.js/node_modules/@discordjs/collection/dist/index.js:1:2066) at Object.run (/home/runner/DinBot-Slash-CMDS/slashcmds/utilidad/serverinfo.js:59:43) at Client.<anonymous> (/home/runner/DinBot-Slash-CMDS/index.js:43:18) at Client.emit (node:events:390:28) at InteractionCreateAction.handle (/home/runner/DinBot-Slash-CMDS/node_modules/discord.js/src/client/actions/InteractionCreate.js:70:12) at Object.module.exports [as INTERACTION_CREATE] (/home/runner/DinBot-Slash-CMDS/node_modules/discord.js/src/client/websocket/handlers/INTERACTION_CREATE.js:4:36) at WebSocketManager.handlePacket (/home/runner/DinBot-Slash-CMDS/node_modules/discord.js/src/client/websocket/WebSocketManager.js:350:31) at WebSocketShard.onPacket (/home/runner/DinBot-Slash-CMDS/node_modules/discord.js/src/client/websocket/WebSocketShard.js:443:22) at WebSocketShard.onMessage (/home/runner/DinBot-Slash-CMDS/node_modules/discord.js/src/client/websocket/WebSocketShard.js:300:10)*Código:
const members = interaction.guild.members.cache; .addField('Presencia', `**Conectado:** ${members.filter(member => member.presence.status === 'online').size}\n` + `**Ausentes:** ${members.filter(member => member.presence.status === 'idle').size}\n` + `**No Molestar:** ${members.filter(member => member.presence.status === 'dnd').size}\n` + `**Desconectado:** ${members.filter(member => member.presence.status === 'offline').size}\n` + '\u200b' )Primero, asegúrese de que la intención GUILD_PRESENCES esté habilitada: https://stackoverflow.com/a/68528046/6126373
En v13, la propiedad de presence ahora puede ser null , así que asegúrese de verificar también eso usando el operador de encadenamiento opcional o verificando si member.presence es verdadera:
members.filter((member) => member.presence?.status === 'online').size; // OR members.filter((member) => member.presence && member.presence.status === 'online').size;