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()