init project

This commit is contained in:
ada-dmitry
2025-04-15 15:35:05 +03:00
commit c0fe2af364
15 changed files with 191 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
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 "Вы отписались.")