如何在Discord bot客户端状态的成员统计中过滤机器人账号
解决方案
- 首先前往Discord开发者平台的对应Bot设置页,开启Server Members Intent(服务器成员意图),否则无法拉取完整的服务器成员列表,统计会不准确
- 新增成员过滤逻辑:通过
filter方法剔除user.bot属性为true的机器人账号,再取过滤后的集合长度即为真实人类用户数 - 新增空值判断逻辑,避免服务器获取失败时报错导致程序崩溃
修改后的完整代码如下:
client.once('ready', () => { setInterval(() => { const targetGuild = client.guilds.cache.get('My Guild ID Here') // 服务器获取失败时直接跳过本次更新避免报错 if (!targetGuild) return // 过滤所有机器人账号,统计真实用户数量 const humanMemberCount = targetGuild.members.cache.filter(member => !member.user.bot).size client.user.setPresence({ activities: [{ name: `${humanMemberCount} Users`, type: 'WATCHING' }], status: 'online' }); }, 1000 * 60 * 5); });
如果首次启动统计结果不准确,可以在ready事件内新增targetGuild.members.fetch()主动拉取全量成员数据更新缓存。
内容的提问来源于stack exchange,提问作者Pooyan
相关产品推荐
相关产品推荐

