所以我正在制作一个机器人程序来显示服务器的统计数据,但我不希望语音频道像现有的机器人程序那样每小时更改2000次。我唯一的问题是如何获取机器人程序、用户和具有特定状态的用户的数量。我尝试了_discord.Guilds.Count
,但它只显示了用户+机器人的数量。提前感谢^^
最好的方法是对所有成员进行foreach并获取它们的状态。
首先记得在https://discord.com/developers/applications/<your application id here>/bot
下的机器人程序设置中启用SERVER MEMBERS INTENT
那个按钮
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++;
}
如果bot返回null,也可以尝试在get方法之间添加一些延迟,如await Task.Delay(5000)
或System.Threading.Thread.Sleep(5000)