mirror of
https://github.com/ada-dmitry/vol_bot.git
synced 2026-09-24 08:40:17 +00:00
34 lines
1.4 KiB
Python
34 lines
1.4 KiB
Python
from aiogram import Router, F
|
|
from aiogram.types import Message, CallbackQuery
|
|
from sqlalchemy import select, insert, update
|
|
from models import User
|
|
from database import async_session
|
|
from keyboards import get_subscription_keyboard
|
|
|
|
router = Router()
|
|
|
|
@router.message(F.text == "/start")
|
|
async def start_handler(message: Message):
|
|
async with async_session() as session:
|
|
|
|
result = await session.execute(select(User).where(User.user_id == message.from_user.id))
|
|
user = result.scalar_one_or_none()
|
|
if not user:
|
|
await session.execute(insert(User).values(user_id=message.from_user.id))
|
|
await session.commit()
|
|
text = "Добро пожаловать! Управляйте подпиской:"
|
|
await message.answer(text, reply_markup=get_subscription_keyboard(user.is_subscribed if user else True))
|
|
|
|
@router.callback_query(F.data.in_(["subscribe", "unsubscribe"]))
|
|
async def toggle_subscription(callback: CallbackQuery):
|
|
subscribe = callback.data == "subscribe"
|
|
async with async_session() as session:
|
|
await session.execute(
|
|
update(User)
|
|
.where(User.user_id == callback.from_user.id)
|
|
.values(is_subscribed=subscribe)
|
|
)
|
|
await session.commit()
|
|
await callback.message.edit_reply_markup(reply_markup=get_subscription_keyboard(subscribe))
|
|
await callback.answer("Вы подписались!" if subscribe else "Вы отписались.")
|