Система бана aiogram 3.x
У меня есть фун-ия для проверки бана и куча хендлеров, которые отвечают за своё действие. Я попытался сделать проверку на бан, но код дальше проверки не работает, хендлер просто ловит сообщение и ничего больше. Как мне реализовать мою задумку?
@admin_router.message()
async def gg(message: Message):
if str(db.block_exist(message.from_user.id)) == "1":
return await message.answer("Вы в бане:)")
и дальше все другие хендлеры.
Ответы (1 шт):
Автор решения: Samikague
→ Ссылка
Для такой задачи вам лучше использовать Middleware. Вот пример:
from typing import Callable, Dict, Any, Awaitable
from aiogram import BaseMiddleware
from aiogram.types import TelegramObject, Message
from ? import db
class CheckBanMiddleware(BaseMiddleware):
async def __call__(
self,
handler: Callable[[TelegramObject, Dict[str, Any]], Awaitable[Any]],
event: TelegramObject,
data: Dict[str, Any]
) -> Any:
if str(db.block_exist(event.from_user.id)) == '1':
await event.answer('Вы в бане')