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

Discord.js报错:Cannot read properties of null (reading 'bot')求助

Discord机器人报错“TypeError: Cannot read properties of null (reading 'bot')”修复方案

问题根源分析

报错本质是代码尝试访问一个null对象的bot属性,结合你的业务逻辑,大概率出在两个环节:消息引用的处理,或是messageUpdate事件中的嵌入消息判断。

针对性修复方案

1. 消息引用检测逻辑加固

当你获取引用消息时,存在引用消息被删除、获取失败的可能,此时返回的对象为null,直接访问其author.bot就会触发报错。

修改示例:

// 获取引用消息时增加异常捕获与空值判断
const referencedMsgId = message.reference?.messageId;
let referencedMessage = null;
if (referencedMsgId) {
  referencedMessage = await message.channel.messages.fetch(referencedMsgId).catch(() => null);
}
// 先确认引用消息存在,再进行后续操作
if (!referencedMessage) return;
// 安全访问bot属性
const isBotAuthor = referencedMessage.author?.bot;

2. messageUpdate事件中嵌入消息判断优化

你标记的if (!newMessage.embeds[0]) return;存在隐患:如果newMessage.embeds本身为null,访问索引[0]会触发类似的空值读取错误,需提前判断数组是否存在且非空。

修改示例:

// 先判断embeds数组是否有效
if (!newMessage.embeds || newMessage.embeds.length === 0) return;
// 再安全访问第一个嵌入消息
const targetEmbed = newMessage.embeds[0];

通用防崩溃技巧

  • 对所有异步获取操作(如消息、用户数据)添加catch块,避免未处理的Promise异常导致机器人崩溃。
  • 访问嵌套属性时使用可选链操作符?.,比如obj?.prop?.subProp,即使中间某层为null/undefined也不会抛出错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:07:15