Описание
Сейчас, даже если фильтр вернул False, все изменения, которые он внёс в ctx, остаются.
Пример
При объединении нескольких фильтров через AndFilter данные, добавленные в ctx уже прошедшими фильтрами, могут остаться в общем контексте, даже если следующий фильтр вернул False.
Пример: цепочка Command("start"), StateFilter(...) может записать ctx["command"], затем не пройти по состоянию, но следующий handler или router увидит command в ctx, хотя текущий набор фильтров не должен был примениться
Что делать
Либо обновляем общий ctx только если все фильтры прошли, либо оставляем как есть. Надо посмотреть, как сделано в аиограме
Описание
Сейчас, даже если фильтр вернул
False, все изменения, которые он внёс вctx, остаются.Пример
При объединении нескольких фильтров через
AndFilterданные, добавленные вctxуже прошедшими фильтрами, могут остаться в общем контексте, даже если следующий фильтр вернулFalse.Пример: цепочка
Command("start"), StateFilter(...)может записатьctx["command"], затем не пройти по состоянию, но следующийhandlerилиrouterувидитcommandвctx, хотя текущий набор фильтров не должен был применитьсяЧто делать
Либо обновляем общий
ctxтолько если все фильтры прошли, либо оставляем как есть. Надо посмотреть, как сделано в аиограме