Feat: added user middleware
This commit is contained in:
@@ -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:
|
||||
|
||||
1
nwxraybot/middlewares/__init__.py
Normal file
1
nwxraybot/middlewares/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from nwxraybot.middlewares.user import UserMiddleware
|
||||
22
nwxraybot/middlewares/user.py
Normal file
22
nwxraybot/middlewares/user.py
Normal 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)
|
||||
Reference in New Issue
Block a user