import logging from aiogram import Router, types from aiogram.filters import Command from bot.database.models import User as DbUser from bot.database.db import ( get_wins_count, get_total_games_count, get_draw_count, get_streak, get_user_by_id ) from bot.utils.helpers import get_partner router = Router() @router.message(Command("stats")) async def handle_stats(message: types.Message, db_user: DbUser): """Обработчик команды /stats. Выводит статистику игры.""" partner = await get_partner(db_user.id) if not partner: await message.answer("Не могу показать статистику, так как не найден партнер.") return try: total_games = await get_total_games_count(db_user.id, partner.id) user_wins = await get_wins_count(db_user.id) partner_wins = await get_wins_count(partner.id) draws = await get_draw_count(db_user.id, partner.id) user_streak = await get_streak(db_user.id) partner_streak = await get_streak(partner.id) except Exception as e: logging.exception(f"Error fetching stats for user {db_user.id} and partner {partner.id}") await message.answer("Произошла ошибка при получении статистики. Попробуйте позже.") return user_name = db_user.username or f"Игрок {db_user.telegram_id}" partner_name = partner.username or f"Игрок {partner.telegram_id}" stats_text = ( f"📊 Статистика \"Кто больше любит?\" ❤️\n\n" f"Всего сыграно игр: {total_games}\n" f"(Завершенных игр между вами)\n\n" f"🏆 Победы:\n" f" - {user_name}: {user_wins}\n" f" - {partner_name}: {partner_wins}\n" f" - Ничьи: {draws}\n\n" f"🔥 Серии побед (стрики):\n" f" - {user_name}:\n" f" - Текущий: {user_streak.current_streak if user_streak else 0}\n" f" - Макс.: {user_streak.max_streak if user_streak else 0}\n" f" - {partner_name}:\n" f" - Текущий: {partner_streak.current_streak if partner_streak else 0}\n" f" - Макс.: {partner_streak.max_streak if partner_streak else 0}" ) await message.answer(stats_text, parse_mode="HTML")