Feat: added user middleware
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
from aiogram import Bot, Dispatcher, Router
|
from aiogram import Bot, Dispatcher, Router
|
||||||
|
|
||||||
|
from nwxraybot.middlewares import UserMiddleware
|
||||||
|
|
||||||
from .meta import Handler
|
from .meta import Handler
|
||||||
|
|
||||||
|
|
||||||
@@ -7,6 +9,7 @@ class NwXrayBot:
|
|||||||
def __init__(self, token: str) -> None:
|
def __init__(self, token: str) -> None:
|
||||||
self.bot = Bot(token=token)
|
self.bot = Bot(token=token)
|
||||||
self.dp = Dispatcher()
|
self.dp = Dispatcher()
|
||||||
|
self.dp.message.middleware(UserMiddleware())
|
||||||
|
|
||||||
def include_routers(self, *routers: Handler):
|
def include_routers(self, *routers: Handler):
|
||||||
for router in routers:
|
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