fix: ensure middleware data is passed to scene entry handler (#1674)
Some checks failed
Tests / tests (macos-latest, 3.10) (push) Has been cancelled
Tests / tests (macos-latest, 3.11) (push) Has been cancelled
Tests / tests (macos-latest, 3.12) (push) Has been cancelled
Tests / tests (macos-latest, 3.13) (push) Has been cancelled
Tests / tests (macos-latest, 3.9) (push) Has been cancelled
Tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
Tests / tests (ubuntu-latest, 3.11) (push) Has been cancelled
Tests / tests (ubuntu-latest, 3.12) (push) Has been cancelled
Tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
Tests / tests (ubuntu-latest, 3.9) (push) Has been cancelled
Tests / tests (windows-latest, 3.10) (push) Has been cancelled
Tests / tests (windows-latest, 3.11) (push) Has been cancelled
Tests / tests (windows-latest, 3.12) (push) Has been cancelled
Tests / tests (windows-latest, 3.13) (push) Has been cancelled
Tests / tests (windows-latest, 3.9) (push) Has been cancelled
Tests / pypy-tests (macos-latest, pypy3.10) (push) Has been cancelled
Tests / pypy-tests (macos-latest, pypy3.9) (push) Has been cancelled
Tests / pypy-tests (ubuntu-latest, pypy3.10) (push) Has been cancelled
Tests / pypy-tests (ubuntu-latest, pypy3.9) (push) Has been cancelled

* fix: ensure middleware data is passed to scene entry handler

* Add documentation for entering scenes with various methods

* Update changelog
This commit is contained in:
Alex Root Junior 2025-04-17 00:42:39 +03:00 committed by GitHub
parent a4256950e4
commit eb84458ff5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 191 additions and 3 deletions

View file

@ -413,7 +413,7 @@ class Scene:
return router
@classmethod
def as_handler(cls, **kwargs: Any) -> CallbackType:
def as_handler(cls, **handler_kwargs: Any) -> CallbackType:
"""
Create an entry point handler for the scene, can be used to simplify the handler
that starts the scene.
@ -421,8 +421,10 @@ class Scene:
>>> router.message.register(MyScene.as_handler(), Command("start"))
"""
async def enter_to_scene_handler(event: TelegramObject, scenes: ScenesManager) -> None:
await scenes.enter(cls, **kwargs)
async def enter_to_scene_handler(
event: TelegramObject, scenes: ScenesManager, **middleware_kwargs: Any
) -> None:
await scenes.enter(cls, **{**handler_kwargs, **middleware_kwargs})
return enter_to_scene_handler