You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.js获取guildMember.presence.status提示无法读取undefined的status属性如何解决

问题根因

该报错由部分成员的presence属性为undefined导致:即便已开启所有必要权限和Intent,Discord API也不会为长期离线的用户、未同步到状态的离线机器人返回presence数据,直接读取presence.status就会触发类型错误。

修复方案

调整成员筛选逻辑,先判断presence属性是否存在再校验状态,修正后的代码如下:

async execute(interaction) {
    let { guild: { members } } = interaction;
    let allMembers = await members.fetch();
    // 仅保留presence存在且状态不是离线的成员
    let onlineUsers = allMembers.filter((member) => member.presence && member.presence.status !== 'offline');
    let usernames = onlineUsers.map((member) => member.displayName);
    // array of usernames of users who are not offline
    console.log(usernames);
}

也可以使用ES2020的可选链语法简化判断:

let onlineUsers = allMembers.filter((member) => member.presence?.status !== 'offline' && !!member.presence);

额外排查点

  • 若你使用的是discord.js v14及以上版本,原有Intent声明方式已失效,需要替换为GatewayIntentBits枚举对应的配置项。
  • 确认你所在服务器的成员隐私设置没有限制机器人读取成员状态。

内容的提问来源于stack exchange,提问作者akmrv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:18:01