Статистика бота на discord.py

Помогите пожалуйста сделать похожую команду как вот тутВот сама картинка команды

Я пытался это сделать сам, но у меня не получалось вычислять сколько серверов, пользователей и голосовых каналом смотрит мой бот, у меня получилось сделать только пинг бота, когда он был запущен и ембед :(

Кто поможет, тому буду очень сильно благодарен! Сразу говорю, я новичок в пайтоне! Заранее огромное спасибо!


Ответы (1 шт):

Автор решения: denisnumb

Я пытался это сделать сам, но у меня не получалось вычислять сколько серверов

Да там и вычислять-то ничего не надо. Просто один раз загуглить что-то вроде "как получить количество серверов бота discord py", либо научиться работать с документацией, где все свойства и методы всех объектов расписаны максимально подробно.

Рекомендую почитать краткое руководство - все, что я пишу ниже сразу станет понятно.


Открываем свойства и методы бота и видим, что здесь есть все почти все необходимое:

введите сюда описание изображения

На каждый элемент списка можно нажать и посмотреть что этот объект из себя представляет.


Видим, что свойство bot.guilds возвращает список (list) серверов бота

введите сюда описание изображения

Таким образом, количество серверов вы можете получить просто применив к списку встроенный метод len()

guilds_count = len(bot.guilds)

Тоже самое с голосовыми соединениями (bot.voice_clients) и пользователями (bot.users).


Каналы находятся на серверах, а это значит, получать их количество нужно именно из объектов серверов.

Вбиваем в поиск документации ключевое слово guild и открываем список свойств сервера

введите сюда описание изображения

Видим здесь свойство channels - не сложно догадаться, что это список каналов сервера.

Поскольку посчитать количество каналов нужно для всех серверов - воспользуемся циклом for:

channels_count = 0
for guild in bot.guilds:
    channels_count += len(guild.channels)

Точно также можно посчитать количество всех участников серверов, так как bot.users возвращает только доступных боту пользователей

members_count = 0
for guild in bot.guilds:
    members_count += len(guild.members) 
→ Ссылка