mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-06 07:50:32 +00:00
Fix bot instance passing in Dispatcher startup (#1247)
Modified the Dispatcher to remove the "bot" key from workflow_data if found, prior to emitting startup in order to allow manual addition of "bot" to workflow data. This change was necessary as a bot instance is required to start polling, and therefore must be passed correctly. This logic is now tested in the 'test_start_polling' function. The change also includes an update to the changelog.
This commit is contained in:
parent
90654ac0fa
commit
62d4b9014c
3 changed files with 7 additions and 0 deletions
1
CHANGES/1242.bugfix.rst
Normal file
1
CHANGES/1242.bugfix.rst
Normal file
|
|
@ -0,0 +1 @@
|
|||
Fixed polling startup when "bot" key is passed manually into dispatcher workflow data
|
||||
|
|
@ -516,6 +516,9 @@ class Dispatcher(Router):
|
|||
**self.workflow_data,
|
||||
**kwargs,
|
||||
}
|
||||
if "bot" in workflow_data:
|
||||
workflow_data.pop("bot")
|
||||
|
||||
await self.emit_startup(bot=bots[-1], **workflow_data)
|
||||
loggers.dispatcher.info("Start polling")
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -675,6 +675,7 @@ class TestDispatcher:
|
|||
|
||||
async def test_start_polling(self, bot: MockedBot):
|
||||
dispatcher = Dispatcher()
|
||||
dispatcher.workflow_data["bot"] = 42
|
||||
with pytest.raises(
|
||||
ValueError, match="At least one bot instance is required to start polling"
|
||||
):
|
||||
|
|
@ -708,6 +709,8 @@ class TestDispatcher:
|
|||
mocked_emit_startup.assert_awaited()
|
||||
mocked_process_update.assert_awaited()
|
||||
mocked_emit_shutdown.assert_awaited()
|
||||
assert dispatcher.workflow_data["bot"] == 42
|
||||
assert mocked_emit_shutdown.call_args.kwargs["bot"] == bot
|
||||
|
||||
async def test_stop_polling(self):
|
||||
dispatcher = Dispatcher()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue