Middleware
Мидлварь должен имплементировать методы pre
и/или post
. pre
вызывается до поиска хендлеров, а post
после.
Мидлвари всегда распаковываются из labeler
Абстрактный класс для мидлварей - BaseMiddleware
Конструктор принимает ивент в качестве аргумента
pre
/post
не принимают аргументов, должны возвращать None
:
self.stop(ошибка)
исполнение view срочно останавливаетсяself.send({ключ: значение})
в контекст добавляются аргументы (ключ - имя аргумента)
BaseMiddleware
, имеет доступ к следующим атрибутам:
event
(сам евент, как указать его тип, смотрите ниже)view: ABCView
(с которым был обработан ивент)handle_responses: list
(все то что вернули хендлеры по порядку их исполнения)handlers: List[ABCHandler]
(все хендлеры что были исполнены)
Тип ивента, который будет обрабатывать мидлварь, указывается в дженерике конструктора мидлвари. Например:
Для message_view это Message, а для raw_event_view словарь.