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.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"
)