feat: channel sub
This commit is contained in:
@@ -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,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user