#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)