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

Discord.js v14:如何将机器人状态设为所在服务器数量

解决Discord机器人状态显示服务器数量为undefined的问题

问题原因

你遇到的undefined是因为使用了Discord.js旧版本的API写法,v13及以后的版本中,client.guilds.size已被废弃,无法直接获取服务器数量。

正确代码实现

以下是适配Discord.js v13+的完整代码:

const { Client, ActivityType } = require('discord.js');
// 必须启用Guilds意图才能获取服务器列表
const client = new Client({ intents: ['Guilds'] });

client.on("ready", () => {
  // 从缓存中获取服务器总数
  const guildsCount = client.guilds.cache.size;
  
  client.user.setPresence({
    activities: [
      { name: `${guildsCount} Servers!`, type: ActivityType.Watching },
    ],
    status: "online",
  });
  
  console.log(`机器人已上线,当前服务${guildsCount}个服务器`);
});

// 替换为你的机器人令牌
client.login('YOUR_BOT_TOKEN');

关键说明

  1. API版本适配:新版本Discord.js将服务器集合移到了client.guilds.cache中,通过cache.size可以直接获取缓存的服务器总数。
  2. 权限配置:必须在Discord开发者门户的机器人设置中确认开启Guilds意图(默认已启用,若修改过配置需检查),同时初始化Client时要声明该意图,否则无法获取服务器数据。
  3. 错误写法纠正:
    • 无需使用map遍历服务器,cache.size是最直接的统计方式
    • cache.get()是根据服务器ID查询单个对象,不能用于统计数量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:30:41