diff --git a/CHANGES/<>.bugfix.rst b/CHANGES/<>.bugfix.rst new file mode 100644 index 00000000..bf6e366e --- /dev/null +++ b/CHANGES/<>.bugfix.rst @@ -0,0 +1,2 @@ +- Scene action handlers (such as `enter`, `leave`, etc.) now properly receive context and data from observer (`outer_middleware`) middlewares, matching the behavior of regular handlers. +- Fixed `TypeError` when accessing middleware-injected arguments inside scene handlers. \ No newline at end of file diff --git a/aiogram/fsm/scene.py b/aiogram/fsm/scene.py index f92bc986..d2e94c96 100644 --- a/aiogram/fsm/scene.py +++ b/aiogram/fsm/scene.py @@ -556,7 +556,9 @@ class SceneWizard: if not self.scene: raise SceneException("Scene is not initialized") - loggers.scene.debug("Call action %r in scene %r (middleware aware)", action.name, self.scene_config.state) + loggers.scene.debug( + "Call action %r in scene %r (middleware aware)", action.name, self.scene_config.state + ) action_config = self.scene_config.actions.get(action, {}) if not action_config: loggers.scene.debug( @@ -588,9 +590,7 @@ class SceneWizard: 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} + _actual_handler, event=self.event, data={**self.data, **kwargs} ) return True