Discord.js 13.7.0如何获取用户所属Discord公会/服务器数量
开发环境信息
- Discord.js 版本:
13.7.0 - Node.js 版本:
16.5.5
共同服务器数量统计实现方案
受Discord官方API权限规则限制,机器人无法获取任意用户加入的全部服务器列表,所有同类机器人展示的该字段统计口径均为目标用户与当前机器人共同加入的服务器总数,不存在跨服务获取全量数据的可能。
核心统计代码
在已有的userinfo命令逻辑中添加如下统计代码,拿到数值后嵌入用户信息返回卡片即可匹配参考展示效果:
// 快速统计版本:基于本地缓存计算,响应速度快,极端场景下可能因成员缓存未加载出现统计偏差 const getMutualGuildCount = (client, targetUserId) => { let count = 0; for (const guild of client.guilds.cache.values()) { if (guild.members.cache.has(targetUserId)) count++; } return count; }; // 精准统计版本:逐服务器拉取成员校验,统计结果无偏差,响应速度略慢 const getMutualGuildCountAccurate = async (client, targetUserId) => { let count = 0; for (const guild of client.guilds.cache.values()) { try { await guild.members.fetch(targetUserId); count++; } catch (err) { // 拉取失败代表用户不在当前服务器,直接跳过 continue; } } return count; };
接入方式
在userinfo命令的执行流程中,解析到查询目标的用户ID后,根据实际需求调用上述对应方法拿到统计值,将其作为信息字段添加到原有构造的Embed消息中即可,无需修改命令原有逻辑。
内容的提问来源于stack exchange,提问作者Luciferas
相关产品推荐
相关产品推荐

