guild.channels содержит все типы включая CategoryChannel. Категории — это контейнеры для группировки, а не каналы. Изменено: - commands/stats.py: filter по isinstance(CategoryChannel) - console_commands/stats.py: аналогичный фильтр - test_commands_stats.py: тест test_stats_excludes_categories - Итого: 234 теста
26 lines
873 B
Python
26 lines
873 B
Python
import discord
|
|
|
|
|
|
def stats(stop_event, bot):
|
|
"""Показать статистику серверов: серверы, каналы, пользователи"""
|
|
if stop_event.is_set():
|
|
return None
|
|
|
|
guilds = bot.guilds
|
|
total_guilds = len(guilds)
|
|
total_channels = sum(
|
|
len([ch for ch in guild.channels if not isinstance(ch, discord.CategoryChannel)])
|
|
for guild in guilds
|
|
)
|
|
total_members = sum(guild.member_count or 0 for guild in guilds)
|
|
latency_ms = round(bot.latency * 1000, 1)
|
|
|
|
print("\n" + "=" * 40)
|
|
print("Статистика серверов")
|
|
print("=" * 40)
|
|
print(f" Серверов: {total_guilds}")
|
|
print(f" Каналов: {total_channels}")
|
|
print(f" Пользователей: {total_members}")
|
|
print(f" Пинг: {latency_ms} мс")
|
|
print("=" * 40)
|