@fors_official

Как перенаправить обработку ивента с одного роутера на другой в aiogram 3.6.0 на python?

У меня есть 2 файла с обработчиками (хендлерами) - 1 для пользовательских команд, 2 для команд администраторов. Команды могут совпадать. При подключении первым в очереди стоит роутер с хендлерами администраторских команд. И к нему подключен middleware который достает из базы данных id админов, и сверяет с id пользователя отправившего сообщения. Если пользователь есть в базе данных, то возвращается await handler(event, data). Но если нет, middleware должен перенаправлять обработку события в другой роутер. Как мне это сделать в middleware? Вот мой текущий middleware:
class IsAdmin(BaseMiddleware):
    async def __call__(self,
                       handler: Callable[[TelegramObject, Dict[str, Any]], Awaitable],
                       event: TelegramObject,
                       data: Dict[str, Any]) -> Any:

        users_id = await admin_users()
        print(users_id)
        if event.from_user.id in users_id:
            return await handler(event, data)


P.S. просто возвращение None не помогает
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Everything_is_bad
в middleware только помечать что юзер админ, ну а пользователей и админов делить не на уровне роутеров, а на уровне отдельного слоя с бизнес логикой, который вызывается из хендлеров
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы