mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +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,
|
**self.workflow_data,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
}
|
}
|
||||||
|
if "bot" in workflow_data:
|
||||||
|
workflow_data.pop("bot")
|
||||||
|
|
||||||
await self.emit_startup(bot=bots[-1], **workflow_data)
|
await self.emit_startup(bot=bots[-1], **workflow_data)
|
||||||
loggers.dispatcher.info("Start polling")
|
loggers.dispatcher.info("Start polling")
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
|
|
@ -675,6 +675,7 @@ class TestDispatcher:
|
||||||
|
|
||||||
async def test_start_polling(self, bot: MockedBot):
|
async def test_start_polling(self, bot: MockedBot):
|
||||||
dispatcher = Dispatcher()
|
dispatcher = Dispatcher()
|
||||||
|
dispatcher.workflow_data["bot"] = 42
|
||||||
with pytest.raises(
|
with pytest.raises(
|
||||||
ValueError, match="At least one bot instance is required to start polling"
|
ValueError, match="At least one bot instance is required to start polling"
|
||||||
):
|
):
|
||||||
|
|
@ -708,6 +709,8 @@ class TestDispatcher:
|
||||||
mocked_emit_startup.assert_awaited()
|
mocked_emit_startup.assert_awaited()
|
||||||
mocked_process_update.assert_awaited()
|
mocked_process_update.assert_awaited()
|
||||||
mocked_emit_shutdown.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):
|
async def test_stop_polling(self):
|
||||||
dispatcher = Dispatcher()
|
dispatcher = Dispatcher()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue