discord.js 无法读取 null 的属性“角色”

Posted

技术标签:

【中文标题】discord.js 无法读取 null 的属性“角色”【英文标题】:discord.js cannot read property 'roles' of null 【发布时间】:2022-01-14 15:00:57 【问题描述】:

我的 discord 机器人遇到了一些问题,我真的需要一些帮助

目前我的机器人正在执行这段代码,并且大部分时间都能完美运行:

if (message.member.roles.cache.has('917521104908742736')) //muted role

        return message.delete();

但是,机器人有时会随机崩溃,并出现以下错误:

TypeError: Cannot read property 'roles' of null

我不知道该怎么办了,更糟糕的是程序随机崩溃,所以我不知道究竟是什么导致了错误。你能帮帮我吗?

【问题讨论】:

如果机器人收到 DM,可能会发生这种情况 是的,非常感谢,确实是这个问题! 【参考方案1】:

消息对象似乎没有member属性(可能是因为消息已经在DM中发送了),尝试为Optional chaining添加询问标记:

if(message.member?.roles.cache.has('917521104908742736')) 
  return message.delete();

【讨论】:

问号后的点上出现 Unexpected Token 错误 您使用的是 Node.js 14 吗?尝试检查node -v【参考方案2】:

机器人只是接收 DM。检查是否是DM,如果是则尽早返回:

if (!message.guild) return;

【讨论】:

【参考方案3】:

也许你应该试试这个

if (message.member.roles.cache.some(role => role.id === 'RoleId')) 
 return message.delete();

【讨论】:

以上是关于discord.js 无法读取 null 的属性“角色”的主要内容,如果未能解决你的问题,请参考以下文章

node.js/discord.js:TypeError:无法读取 null 的属性“setPresence”

Discord.js TypeError:无法读取 null 的属性“角色”

node.js / discord.js:TypeError:无法读取null的属性'setPresence'

Discord.js 的欢迎消息 - “无法读取未定义的属性 'get'”

Discord.js 无法读取未定义的属性“获取”

无法读取未定义的属性“发送”(Discord.js)