From 1b39cff5a4b47aa1ef51c594d55687dda6f0a183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=A5=D1=80=D0=B8=D1=81?= =?UTF-8?q?=D1=82=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Tue, 15 Apr 2025 07:13:51 +0300 Subject: [PATCH] Address missed middleware bug: ensure all middlewares work in scenes (missed in previous commit) --- aiogram/fsm/scene.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/aiogram/fsm/scene.py b/aiogram/fsm/scene.py index d2e94c96..5631f408 100644 --- a/aiogram/fsm/scene.py +++ b/aiogram/fsm/scene.py @@ -11,6 +11,7 @@ from typing_extensions import Self from aiogram import loggers from aiogram.dispatcher.dispatcher import Dispatcher from aiogram.dispatcher.event.bases import NextMiddlewareType +from aiogram.dispatcher.middlewares.manager import MiddlewareManager from aiogram.dispatcher.event.handler import CallableObject, CallbackType from aiogram.dispatcher.flags import extract_flags_from_object from aiogram.dispatcher.router import Router @@ -586,12 +587,10 @@ class SceneWizard: await action_config[event_type].call(self.scene, self.event, **{**self.data, **kwargs}) return True - async def _actual_handler(event, **data): - return await action_config[event_type].call(self.scene, event, **data) - - await observer.wrap_outer_middleware( - _actual_handler, event=self.event, data={**self.data, **kwargs} - ) + middlewares = [*observer.outer_middleware, *observer._resolve_middlewares()] + handler = lambda event, **data: action_config[event_type].call(self.scene, event, **data) + wrapped = MiddlewareManager.wrap_middlewares(middlewares, handler) + await wrapped(self.event, {**self.data, **kwargs}) return True async def set_data(self, data: Dict[str, Any]) -> None: