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

discord.js机器人自定义状态显示服务器成员数为undefined如何解决

问题原因
  • 你调用的client.guilds是discord.js里的GuildManager集合对象,本身不存在memberCount属性,所以读取结果自然是undefined。memberCount是单个服务器(Guild实例)的属性,你需要遍历所有服务器累加成员数,或者指定你要读取的单个服务器的成员数。
解决方案

分两种适用场景选择对应代码即可:

场景1:机器人仅在单个服务器运行,展示该服务器的成员数

你需要先拿到对应服务器的实例,再读取它的memberCount属性,代码示例:

client.on('ready', () => {
  // 把引号内的内容替换成你目标服务器的ID
  const targetGuild = client.guilds.cache.get('你的服务器ID');
  if (!targetGuild) return console.log('未找到目标服务器');
  client.user.setActivity(`${targetGuild.memberCount} Members!`);
});

场景2:机器人在多个服务器运行,展示所有服务器的总成员数

你需要遍历所有服务器的成员数累加求和,代码示例:

client.on('ready', () => {
  let totalMembers = 0;
  client.guilds.cache.forEach(guild => {
    totalMembers += guild.memberCount;
  });
  client.user.setActivity(`${totalMembers} Members!`);
});
注意事项

如果你使用的是discord.js v13及以上版本,需要先在Discord开发者后台的机器人设置页开启Server Members Intent权限,同时初始化client的时候要配置对应的Intents,否则无法正常读取成员数:

// 初始化client示例
const { Client, IntentsBitField } = require('discord.js');
const client = new Client({
  intents: [
    IntentsBitField.Flags.Guilds,
    IntentsBitField.Flags.GuildMembers
  ]
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:27:02