Files

35 lines
1.2 KiB
Python

from collections.abc import Awaitable, Callable
from typing import Any
from aiogram import BaseMiddleware
from aiogram.types import CallbackQuery, Message, TelegramObject
from .binding import BindingService
class BindingRequiredMiddleware(BaseMiddleware):
"""Не пропускает CRM-команды до привязки аккаунта."""
def __init__(self, bindings: BindingService) -> None:
self.bindings = bindings
async def __call__(
self,
handler: Callable[[TelegramObject, dict[str, Any]], Awaitable[Any]],
event: TelegramObject,
data: dict[str, Any]
) -> Any:
user = data.get("event_from_user")
if user:
binding = await self.bindings.find(user.id)
if binding:
data["binding"] = binding
return await handler(event, data)
text = "Сначала привяжи Telegram через приложение в Bitrix24."
if isinstance(event, CallbackQuery):
await event.answer(text, show_alert=True)
elif isinstance(event, Message):
await event.answer(text)
return None