Как убрать распространение middleware с некоторых обработчиков?
я использую библиотеку для работы с Telegram Bot API и написал некоторое middleware, проверяющее наличие пришедшего id(по сообщению) на наличие в базе. Я предполагал, что осуществлю возможность пользователю подписаться и отписаться, но middleware распространяется на все message handlers, есть ли какая-то возможность убрать распространение с обработчика, ответственного за обработку подписки? Получается так, что пользователь не может подписаться из-за того, что middleware блокирует от него сообщения. Вот если что код:
class AccessMiddleware(BaseMiddleware):
"""
Middleware that determines user access to bot functions.
"""
@staticmethod
async def user_among_subscribers(telegram_id: int) -> bool:
"""
A method that checks the received user by an incoming
message for the presence among the bot subscribers.
"""
subscriber = await fetch_one('subscribers', 'telegram_id', telegram_id)
return subscriber is not None
async def on_process_message(self, message: Message, _) -> None:
"""
Method that checks the user's rights to use the bot when
receiving a message from it.
"""
if not await self.user_among_subscribers(message.from_user.id):
await message.answer(
'Access denied. '
'In order to use the functionality of this bot, '
'you must subscribe.'
)
raise CancelHandler()
Просьба не советовать решения в лоб, что-то вроде следующего:
if message.text == '/subscribe':
...