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

Discord.js 服务器机器人数量统计异常问题求助

Discord机器人统计成员/机器人数量异常的解决方案

问题原因

你用message.guild.members.cache统计的结果不对,是因为Discord.js默认只会缓存部分成员(比如当前在线、最近有互动的成员),而非服务器的全部成员,所以才会出现实际14个机器人只返回1、5个真实用户也只返回1的情况。

解决方案

要获取服务器的完整成员列表,必须手动调用fetch()方法拉取所有成员,再进行统计。同时需要确保机器人配置了正确的权限和意图。

1. 开启成员意图(Discord开发者端)

登录Discord开发者门户,找到你的机器人应用:

  • 进入「Bot」页面
  • 拉到「Privileged Gateway Intents」区域
  • 开启「Server Members Intent」开关
  • 保存更改

2. 修正代码(异步处理)

因为fetch()是异步方法,需要在异步函数中执行:

// 假设在命令处理的异步函数内
async function countMembers(message) {
  // 获取服务器所有成员
  const allMembers = await message.guild.members.fetch();
  
  // 统计机器人数量
  const botCount = allMembers.filter(member => member.user.bot).size;
  // 统计真实用户数量
  const humanCount = allMembers.filter(member => !member.user.bot).size;
  
  console.log(`机器人数量:${botCount}`);
  console.log(`真实用户数量:${humanCount}`);
}

3. 权限检查

确保你的机器人在目标服务器中拥有「查看服务器成员」的权限,否则无法拉取完整成员列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:31:02