Как получить пользователей, ботов и количество онлайн-пользователей в discord.net?

#c# #discord #discord.net

Вопрос:

Поэтому я создаю бота, который показывает статистику сервера, но я не хочу, чтобы голосовой канал менялся две тысячи раз в час, как это делают существующие боты. Моя единственная проблема заключается в том, как получить количество ботов, пользователей и пользователей с определенными статусами. Я пробовал _discord.Guilds.Count , но он показывает только количество пользователей ботов. Заранее благодарю вас ^^

Комментарии:

1. Я тоже сталкивался с этим. Когда я загружаю пользователей гильдии, все, что я вижу, — это мой пользователь-бот, а не мой личный пользователь, вошедший в гильдию. И клиент сокета IGuild. Вызов DownloadUsersAsync никогда не возвращается.

Ответ №1:

Лучший способ-пройти через всех участников и получить их статус.

Во-первых, не забудьте включить SERVER MEMBERS INTENT в настройках вашего бота под https://discord.com/developers/applications/lt;your application id heregt;/bot этой кнопкой

 IGuild guild = _discord.GetGuild(1234567890); //Put your discord server id  IGuildUser[] users = guild.GetUsersAsync().Result.ToArray();  int totalUsers = users.Where(user =gt; 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, если бот возвращает значения null, такие как await Task.Delay(5000) или System.Threading.Thread.Sleep(5000)