discordBot/commands/stats.py
deadzilla f4d267d254 fix: !stats исключает CategoryChannel из подсчёта каналов
guild.channels содержит все типы включая CategoryChannel.
Категории — это контейнеры для группировки, а не каналы.

Изменено:
  - commands/stats.py: filter по isinstance(CategoryChannel)
  - console_commands/stats.py: аналогичный фильтр
  - test_commands_stats.py: тест test_stats_excludes_categories
  - Итого: 234 теста
2026-06-12 17:01:53 +05:00

30 lines
1.2 KiB
Python

import discord
from discord.ext import commands
class Stats(commands.Cog):
"""Команда !stats — статистика серверов"""
@commands.command(name="stats")
async def stats(self, ctx):
"""Количество серверов, каналов и пользователей"""
guilds = ctx.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(ctx.bot.latency * 1000, 1)
embed = discord.Embed(
title="Статистика серверов",
colour=discord.Color.blue(),
)
embed.add_field(name="Серверов", value=str(total_guilds), inline=True)
embed.add_field(name="Каналов", value=str(total_channels), inline=True)
embed.add_field(name="Пользователей", value=str(total_members), inline=True)
embed.add_field(name="Пинг", value=f"{latency_ms} мс", inline=True)
await ctx.send(embed=embed)