Files
telegram_bot_vpn/bot/handlers/cabinet.py
2026-02-18 00:02:25 +05:00

58 lines
2.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from aiogram import Router, types, F
from aiogram.filters import Command
from bot.keyboards.subscription import subscription_keyboard, cabinet_keyboard
import uuid
from datetime import datetime, timedelta
from bot.database.subscription_db import init_db, set_subscription, get_subscription, extend_subscription
init_db()
router = Router()
@router.message(Command("cabinet"))
async def cabinet(message: types.Message):
user_id = message.from_user.id
sub = get_subscription(user_id)
if sub:
await message.answer(
f"🗂 Личный кабинет\n"
f"Статус: Активна\n"
f"UUID: {sub['uuid']}\n"
f"Действует до: {sub['until'].strftime('%d.%m.%Y')}\n",
reply_markup=cabinet_keyboard
)
else:
await message.answer("У вас нет активной подписки.")
@router.callback_query(F.data.startswith("sub_"))
async def on_subscribe(callback: types.CallbackQuery):
user_id = callback.from_user.id
period_map = {
"sub_1m": 1,
"sub_3m": 3,
"sub_6m": 6,
"sub_12m": 12,
}
period = period_map.get(callback.data)
if not period:
await callback.answer("Ошибка выбора тарифа", show_alert=True)
return
# Генерируем uuid и дату окончания
import uuid as uuidlib
sub_id = str(uuidlib.uuid4())
until = datetime.now() + timedelta(days=30*period)
set_subscription(user_id, sub_id, until)
await callback.message.answer(
f"Вы выбрали подписку на {period} мес.\n\nПерейдите к оплате (будет реализовано позже)")
await callback.answer()
@router.callback_query(F.data == "extend_sub")
async def on_extend(callback: types.CallbackQuery):
user_id = callback.from_user.id
sub = get_subscription(user_id)
if not sub:
await callback.answer("Нет активной подписки", show_alert=True)
return
await callback.message.answer("Выберите период продления:", reply_markup=subscription_keyboard)
await callback.answer()