feat: channel sub

This commit is contained in:
2026-08-20 10:52:40 +07:00
parent 04be991865
commit 7031ed4d46
6 changed files with 75 additions and 13 deletions

View File

@@ -5,15 +5,15 @@ from aiogram.fsm.context import FSMContext
from aiogram.types import CallbackQuery, Message
from sqlalchemy.ext.asyncio import AsyncSession
from config import NOTIFICATION_CHANNEL
from config import CHANNEL_ID, NOTIFICATION_CHANNEL
from db.models.orders import OrderStatus
from dto.checkout import CheckoutContext
from misc.kb.admins import customer_contacts
from misc.kb.client import order_confirmation, order_specs_confirmation
from misc.kb.client import order_confirmation, order_specs_confirmation, subscription
from misc.kb.common import return_menu
from misc.states import CheckoutStorage
from misc.texts import get_order_item_list
from misc.utils import is_valid_phone
from misc.utils import is_member, is_valid_phone
from repositories.orders import OrderRepository
from services.orders import OrderService
@@ -180,3 +180,30 @@ async def payment_create(
)
logger.exception(e)
return
@router.callback_query(F.data.startswith("precheck_order:"))
async def precheck_order(
cb: CallbackQuery, state: FSMContext, session: AsyncSession, order_repo: OrderRepository
):
await state.clear()
order_id = cb.data.split(":")[1]
if not order_id.isdigit():
await cb.message.edit_text("🍃 Что-то пошло не так.", reply_markup=return_menu)
return
member = await cb.bot.get_chat_member(CHANNEL_ID, cb.from_user.id)
if not is_member(member):
await cb.message.edit_text(
"<b>📚 Мы заметили, что вы не подписаны на канал.</b>",
reply_markup=subscription(order_id),
)
return
await order_confirm(
cb=cb,
state=state,
session=session,
order_repo=order_repo,
)