From 0c9eeda8a7a73e96c346fd44fa4fc434368b3130 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 10 Mar 2024 16:18:41 +0200 Subject: [PATCH] Fixed poll answer FSM context (#1436) * Add voter_chat to poll_answer event handling The change ensures that when a poll_answer event is processed, the user context middleware now also returns the chat where the vote took place. Previously, only the user who cast the vote was returned. * Added changelog * Fixed tests * Bump Python version in test --- CHANGES/1436.bugfix.rst | 1 + aiogram/dispatcher/middlewares/user_context.py | 2 +- tests/test_api/test_client/test_bot.py | 8 ++++---- tests/test_api/test_client/test_default.py | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 CHANGES/1436.bugfix.rst diff --git a/CHANGES/1436.bugfix.rst b/CHANGES/1436.bugfix.rst new file mode 100644 index 00000000..defb7d37 --- /dev/null +++ b/CHANGES/1436.bugfix.rst @@ -0,0 +1 @@ +Fixed poll answer FSM context by handling :code:`voter_chat` for :code:`poll_answer` event diff --git a/aiogram/dispatcher/middlewares/user_context.py b/aiogram/dispatcher/middlewares/user_context.py index 84af8eb6..87c38147 100644 --- a/aiogram/dispatcher/middlewares/user_context.py +++ b/aiogram/dispatcher/middlewares/user_context.py @@ -71,7 +71,7 @@ class UserContextMiddleware(BaseMiddleware): if event.pre_checkout_query: return None, event.pre_checkout_query.from_user, None if event.poll_answer: - return None, event.poll_answer.user, None + return event.poll_answer.voter_chat, event.poll_answer.user, None if event.my_chat_member: return event.my_chat_member.chat, event.my_chat_member.from_user, None if event.chat_member: diff --git a/tests/test_api/test_client/test_bot.py b/tests/test_api/test_client/test_bot.py index bdac9ed9..7a836b04 100644 --- a/tests/test_api/test_client/test_bot.py +++ b/tests/test_api/test_client/test_bot.py @@ -44,14 +44,14 @@ class TestBot: def test_init_default(self): with check_deprecated( - max_version="3.5.0", + max_version="3.7.0", exception=TypeError, ): bot = Bot(token="42:Test", parse_mode="HTML") def test_deprecated_parse_mode(self): with check_deprecated( - max_version="3.5.0", + max_version="3.7.0", exception=AttributeError, ): bot = Bot(token="42:Test", parse_mode="HTML") @@ -59,7 +59,7 @@ class TestBot: def test_disable_web_page_preview(self): with check_deprecated( - max_version="3.5.0", + max_version="3.7.0", exception=TypeError, ): bot = Bot(token="42:Test", disable_web_page_preview=True) @@ -67,7 +67,7 @@ class TestBot: def test_deprecated_protect_content(self): with check_deprecated( - max_version="3.5.0", + max_version="3.7.0", exception=AttributeError, ): bot = Bot(token="42:Test", protect_content=True) diff --git a/tests/test_api/test_client/test_default.py b/tests/test_api/test_client/test_default.py index 55fd38e9..2445c435 100644 --- a/tests/test_api/test_client/test_default.py +++ b/tests/test_api/test_client/test_default.py @@ -61,7 +61,7 @@ class TestDefaultBotProperties: assert default_bot_properties["link_preview_prefer_large_media"] is True assert default_bot_properties["link_preview_show_above_text"] is True - @pytest.mark.skipif(sys.version_info < (3, 10), reason="requires python3.10 or higher") + @pytest.mark.skipif(sys.version_info < (3, 12), reason="requires python3.11 or higher") def test_dataclass_creation_3_10_plus(self): params = DefaultBotProperties.__dataclass_params__ assert params.slots is True