Feat: added user middleware

This commit is contained in:
2025-01-02 22:01:05 +03:00
parent e73bc6569b
commit 7093f7452d
3 changed files with 26 additions and 0 deletions

View File

@@ -1,5 +1,7 @@
from aiogram import Bot, Dispatcher, Router
from nwxraybot.middlewares import UserMiddleware
from .meta import Handler
@@ -7,6 +9,7 @@ class NwXrayBot:
def __init__(self, token: str) -> None:
self.bot = Bot(token=token)
self.dp = Dispatcher()
self.dp.message.middleware(UserMiddleware())
def include_routers(self, *routers: Handler):
for router in routers:

View File

@@ -0,0 +1 @@
from nwxraybot.middlewares.user import UserMiddleware

View File

@@ -0,0 +1,22 @@
from typing import Any, Awaitable, Callable, Dict, Optional
from aiogram import BaseMiddleware
from aiogram.enums import ChatType
from aiogram.types import Message
from nwxraybot.models import User
class UserMiddleware(BaseMiddleware):
def __init__(self) -> None:
pass
async def __call__(self, handler: Callable[[Message, Dict[str, Any]], Awaitable[Any]], event: Message, data: Dict[str, Any]) -> Any:
if event.chat.type != ChatType.PRIVATE:
return None
user: Optional[User] = User.select().where(
User.id == event.from_user.id).first()
if user is None:
await event.answer("Вы не зарегистрированы в системе, обратитесь к админам за доступом!")
return None
return await handler(event, data)