test api
This commit is contained in:
57
bot/handlers/cabinet.py
Normal file
57
bot/handlers/cabinet.py
Normal file
@@ -0,0 +1,57 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user