如何在 discord.net 中获取用户、机器人和在线用户数?
Posted
技术标签:
【中文标题】如何在 discord.net 中获取用户、机器人和在线用户数?【英文标题】:How to get users, bots and online users number in discord.net? 【发布时间】:2021-12-24 04:49:57 【问题描述】:所以我正在制作一个显示服务器统计信息的机器人,但我不希望语音通道像现有机器人那样每小时更改 2000 次。我唯一的问题是如何获取机器人、用户和具有特定状态的用户的数量。我试过_discord.Guilds.Count
,但它只显示用户+机器人的数量。提前谢谢你^^
【问题讨论】:
我也遇到过这种情况。当我下载公会用户时,我看到的只是我的机器人用户,而不是我登录公会的个人用户。并且套接字客户端 IGuild.DownloadUsersAsync 调用永远不会返回。 【参考方案1】:最好的方法是遍历所有成员并获取他们的状态。
首先记得在https://discord.com/developers/applications/<your application id here>/bot
下的机器人设置中启用SERVER MEMBERS INTENT
That button
IGuild guild = _discord.GetGuild(1234567890); //Put your discord server id
IGuildUser[] users = guild.GetUsersAsync().Result.ToArray();
int totalUsers = users.Where(user => user.IsBot == false).Count();
int online = 0;
int offline = 0;
int bots = 0;
foreach (IGuildUser user in users)
if (user.IsBot) bots++;
else if (user.Status == UserStatus.Online) online++;
else if (user.Status == UserStatus.Offline) offline++;
如果机器人返回空值,您也可以尝试在 get 方法之间添加一些延迟,例如 await Task.Delay(5000)
或 System.Threading.Thread.Sleep(5000)
【讨论】:
以上是关于如何在 discord.net 中获取用户、机器人和在线用户数?的主要内容,如果未能解决你的问题,请参考以下文章
Discord.NET c# SocketUser 返回 null