from aiogram import Router, types from aiogram.filters import Command from aiogram.types import Message from tg_bot.config.settings import settings from tg_bot.domain.services.user_service import UserService router = Router() user_service = UserService() @router.message(Command("stats")) async def cmd_stats(message: Message): user_id = message.from_user.id try: user = await user_service.get_user_by_telegram_id(user_id) if user: stats_text = ( f"Ваша статистика\n\n" f"Основное:\n" f"• ID: {user_id}\n" f"• Premium: {'Да' if user.is_premium else 'Нет'}\n" f"• Вопросов использовано: {user.questions_used}/{settings.FREE_QUESTIONS_LIMIT}\n\n" ) if user.is_premium: stats_text += ( f"Premium статус:\n" f"• Активен до: {user.premium_until.strftime('%d.%m.%Y') if user.premium_until else 'Не указано'}\n" f"• Лимит вопросов: безлимитно\n\n" ) else: remaining = max(0, settings.FREE_QUESTIONS_LIMIT - user.questions_used) stats_text += ( f"Бесплатный доступ:\n" f"• Осталось вопросов: {remaining}\n" f"• Для безлимита: /buy\n\n" ) else: stats_text = ( f"Добро пожаловать!\n\n" f"Вы новый пользователь.\n" f"• Ваш ID: {user_id}\n" f"• Бесплатных вопросов: {settings.FREE_QUESTIONS_LIMIT}\n" f"• Для начала работы просто задайте вопрос!\n\n" f"Используйте /buy для получения полного доступа" ) await message.answer(stats_text, parse_mode="HTML") except Exception as e: await message.answer( f"Ошибка получения статистики\n\n" f"Попробуйте позже.", parse_mode="HTML" )