From 71eb5fc44ebde015cef6618d21daac7ce0d13204 Mon Sep 17 00:00:00 2001 From: darksidecat <58224121+darksidecat@users.noreply.github.com> Date: Tue, 17 Aug 2021 00:08:36 +0300 Subject: [PATCH] fix #660 prepare parse mode for input_message_content (#661) * fix #660 prepare parse mode for input_message_content of InlineQueryResult * remove redundant get * black lint * add towncrier patch note --- CHANGES/660.bugfix | 1 + aiogram/methods/answer_inline_query.py | 9 +++++++- .../test_methods/test_answer_inline_query.py | 21 ++++++++++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 CHANGES/660.bugfix diff --git a/CHANGES/660.bugfix b/CHANGES/660.bugfix new file mode 100644 index 00000000..3da5568d --- /dev/null +++ b/CHANGES/660.bugfix @@ -0,0 +1 @@ +Prepare parse mode for InputMessageContent in AnswerInlineQuery method diff --git a/aiogram/methods/answer_inline_query.py b/aiogram/methods/answer_inline_query.py index 95c9b66d..78511403 100644 --- a/aiogram/methods/answer_inline_query.py +++ b/aiogram/methods/answer_inline_query.py @@ -37,5 +37,12 @@ class AnswerInlineQuery(TelegramMethod[bool]): def build_request(self, bot: Bot) -> Request: data: Dict[str, Any] = self.dict() - prepare_parse_mode(bot, data["results"]) + + input_message_contents = [] + for result in data["results"]: + input_message_content = result.get("input_message_content", None) + if input_message_content is not None: + input_message_contents.append(input_message_content) + + prepare_parse_mode(bot, data["results"] + input_message_contents) return Request(method="answerInlineQuery", data=data) diff --git a/tests/test_api/test_methods/test_answer_inline_query.py b/tests/test_api/test_methods/test_answer_inline_query.py index 6b15cb8c..98227b57 100644 --- a/tests/test_api/test_methods/test_answer_inline_query.py +++ b/tests/test_api/test_methods/test_answer_inline_query.py @@ -2,7 +2,7 @@ import pytest from aiogram import Bot from aiogram.methods import AnswerInlineQuery, Request -from aiogram.types import InlineQueryResult, InlineQueryResultPhoto +from aiogram.types import InlineQueryResult, InlineQueryResultPhoto, InputTextMessageContent from tests.mocked_bot import MockedBot pytestmark = pytest.mark.asyncio @@ -40,3 +40,22 @@ class TestAnswerInlineQuery: new_bot = Bot(token="42:TEST", parse_mode="HTML") request = query.build_request(new_bot) assert request.data["results"][0]["parse_mode"] == "HTML" + + def test_parse_mode_input_message_content(self, bot: MockedBot): + query = AnswerInlineQuery( + inline_query_id="query id", + results=[ + InlineQueryResultPhoto( + id="result id", + photo_url="photo", + thumb_url="thumb", + input_message_content=InputTextMessageContent(message_text="test"), + ) + ], + ) + request = query.build_request(bot) + assert request.data["results"][0]["input_message_content"]["parse_mode"] is None + + new_bot = Bot(token="42:TEST", parse_mode="HTML") + request = query.build_request(new_bot) + assert request.data["results"][0]["input_message_content"]["parse_mode"] == "HTML"