【问题标题】:TypeError: Cannot read properties of null (reading 'status') using slash commandsTypeError:无法使用斜杠命令读取 null 的属性(读取“状态”)
【发布时间】:2022-01-05 04:05:55
【问题描述】:

我正在使用 discord.js v13,并且在尝试使用成员状态检查其状态时收到以下错误:

错误:

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)*

代码:

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'
   )

【问题讨论】:

  • 我已将成员定义为:const members = interaction.guild.members.cache;

标签: javascript discord.js


【解决方案1】:

首先,确保GUILD_PRESENCES Intent 已启用:https://stackoverflow.com/a/68528046/6126373

在 v13 中,presence 属性 can now be null,因此请确保您还使用 optional chaining operator 或通过检查 member.presence 是否为真:

members.filter((member) => member.presence?.status === 'online').size;

// OR

members.filter((member) => member.presence && member.presence.status === 'online').size;

【讨论】:

  • 每次都显示 0
  • 您是否启用了GUILD_PRESENCES 意图?
猜你喜欢
  • 2022-08-04
  • 1970-01-01
  • 2021-12-02
  • 2021-04-29
  • 2018-11-01
  • 2022-01-12
  • 2021-12-04
  • 2021-12-17
  • 2022-01-09
相关资源
最近更新 更多