Добавление всех наработок за период практики.

This commit is contained in:
SkyForces
2026-07-24 00:46:19 +03:00
parent 24943b8a73
commit ae4141ba28
56 changed files with 3987 additions and 136 deletions
+34
View File
@@ -0,0 +1,34 @@
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