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

如何在Discord.Net中获取服务器用户数、机器人数量及在线用户数?

Discord服务器用户分类统计实现方案

前置准备

首先你需要在Discord开发者平台的机器人设置页开启服务器成员意图(Server Members Intent),未开启该权限的情况下你只能获取到部分在线用户数据,无法拉取完整的服务器成员列表。
另外你之前调用的_discord.Guilds.Count是统计当前机器人加入的服务器总数量的API,并非单服务器内的成员统计接口,你需要先获取目标服务器的Guild实例再进行成员统计。

各维度统计实现(以Discord.Net库为例)

1. 普通用户/机器人数量统计

// 替换为目标服务器的ID,获取对应Guild实例
var targetGuild = _discord.GetGuild(123456789012345678);
// 统计非机器人的普通用户总数
int humanUserCount = targetGuild.Users.Count(user => !user.IsBot);
// 统计机器人总数
int botCount = targetGuild.Users.Count(user => user.IsBot);

2. 特定状态用户数量统计

通过UserStatus枚举过滤对应状态的用户即可,可选状态包括Online(在线)、Idle(空闲)、DoNotDisturb(请勿打扰)、Offline(离线):

// 示例:统计处于在线状态的普通用户数量
int onlineHumanCount = targetGuild.Users.Count(user => !user.IsBot && user.Status == UserStatus.Online);

减少语音频道更新频率的优化建议

  • 设置最低更新间隔,推荐5~10分钟更新一次频道名称即可,这类统计数据无强实时性要求
  • 新增差值更新逻辑:每次统计完成后和上一次的结果对比,只有数值变化超过2个单位时才执行频道名称更新,避免小幅度的用户进出/状态切换触发频繁更新
  • 遵守Discord API速率限制,频道名称修改接口调用过于频繁会触发限流,甚至导致临时封禁API调用权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:06:10