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

Discord机器人执行info命令或入新服务器时broadcastEval空值错误求助

解决Discord机器人broadcastEval空值错误

问题分析

你遇到的TypeError: Cannot read properties of null (reading 'broadcastEval')错误,本质是代码尝试调用一个null对象的broadcastEval方法。从报错路径看,问题出在info.js第7行,大概率是你写了类似client.shard.broadcastEval(...)的代码,但当前机器人实例的client.shard属性为null。

broadcastEval是Discord.js中**分片管理器(ShardingManager)**的专属方法,只有当机器人启用分片模式运行时,client.shard才会被初始化。如果你的机器人没有启用分片,直接访问client.shard就会得到null,进而触发这个错误。


修复方案

方案1:不需要分片的情况

如果你的机器人规模较小,不需要分片,直接替换掉broadcastEval的调用逻辑,用本地数据获取即可。比如要统计服务器总数:

// 替换原来的broadcastEval代码
const guildCount = client.guilds.cache.size;
const userCount = client.users.cache.size;

方案2:需要兼容分片/非分片模式

如果你的机器人可能在分片或非分片环境运行,添加空值检查即可:

let guildCount;
// 先判断分片是否存在
if (client.shard) {
  // 分片模式下广播获取所有分片的服务器数量并求和
  guildCount = (await client.shard.broadcastEval(c => c.guilds.cache.size)).reduce((total, count) => total + count, 0);
} else {
  // 非分片模式直接取本地数据
  guildCount = client.guilds.cache.size;
}

额外排查

如果机器人加入新服务器时也报错,检查guildCreate等相关事件处理代码,看是否也存在同样未检查client.shard就调用broadcastEval的情况,按上述方式统一修复即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:40:44