forked from HSE_team/BetterCallPraskovia
60 lines
2.4 KiB
Python
60 lines
2.4 KiB
Python
|
||
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"<b>Ваша статистика</b>\n\n"
|
||
f"<b>Основное:</b>\n"
|
||
f"• ID: <code>{user_id}</code>\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"<b>Premium статус:</b>\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"<b>Бесплатный доступ:</b>\n"
|
||
f"• Осталось вопросов: {remaining}\n"
|
||
f"• Для безлимита: /buy\n\n"
|
||
)
|
||
else:
|
||
stats_text = (
|
||
f"<b>Добро пожаловать!</b>\n\n"
|
||
f"Вы новый пользователь.\n"
|
||
f"• Ваш ID: <code>{user_id}</code>\n"
|
||
f"• Бесплатных вопросов: {settings.FREE_QUESTIONS_LIMIT}\n"
|
||
f"• Для начала работы просто задайте вопрос!\n\n"
|
||
f"<i>Используйте /buy для получения полного доступа</i>"
|
||
)
|
||
|
||
await message.answer(stats_text, parse_mode="HTML")
|
||
|
||
except Exception as e:
|
||
await message.answer(
|
||
f"<b>Ошибка получения статистики</b>\n\n"
|
||
f"Попробуйте позже.",
|
||
parse_mode="HTML"
|
||
)
|