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

如何用Discord.js查询指定ID的其他机器人所在服务器数量

在Discord.js中查询其他机器人的服务器数量

首先得明确:Discord官方API不会公开其他机器人的总服务器数量,这属于隐私数据——只有机器人自己能通过client.guilds.cache.size查看自己的服务器总数。你用client.users.cache.get()找不到相关数据,是因为User对象里根本没有这个字段。

如果你想知道的是你的机器人和目标机器人共同加入的服务器数量,可以这么做:

  • 先通过client.users.fetch()获取目标机器人的用户对象(比用缓存更可靠,避免缓存里没有目标机器人数据的情况)
  • 遍历你的机器人所在的所有服务器,逐个检查目标机器人是否在该服务器内,统计符合条件的数量

代码示例:

async function countSharedGuilds(targetBotId) {
  try {
    // 获取目标机器人的用户信息,先验证是不是机器人账号
    const targetBot = await client.users.fetch(targetBotId);
    if (!targetBot.bot) throw new Error("输入的ID不是机器人账号");

    let sharedCount = 0;
    // 遍历当前机器人的所有服务器
    for (const guild of client.guilds.cache.values()) {
      // 尝试获取目标机器人在该服务器的成员对象,失败则返回null
      const botMember = await guild.members.fetch(targetBotId).catch(() => null);
      if (botMember) sharedCount++;
    }

    return sharedCount;
  } catch (err) {
    console.error("查询出错:", err);
    return null;
  }
}

// 调用示例,替换成目标机器人的实际ID
const targetBotId = "123456789012345678";
countSharedGuilds(targetBotId).then(count => {
  console.log(`和目标机器人共同存在的服务器数:${count}`);
});

注意事项:

  • 这个方法只能统计共同服务器数,无法获取目标机器人的总服务器数量
  • 你的机器人需要在对应服务器拥有获取成员的权限,否则无法检查目标机器人是否存在
  • 如果你的机器人加入了大量服务器,遍历过程可能触发Discord的API速率限制,必要时可以加入延迟优化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:22:04