From c1f605c6f594857068facaf51ae298e7c893d8ff Mon Sep 17 00:00:00 2001 From: darksidecat <58224121+darksidecat@users.noreply.github.com> Date: Tue, 17 Aug 2021 00:11:47 +0300 Subject: [PATCH] add aliases for edit/delete reply markup to Message (#662) * add aliases for edit/delete reply markup to Message * add towncrier patch note * add missed towncrier patch note description --- CHANGES/662.feature | 1 + aiogram/types/message.py | 16 ++++++ tests/test_api/test_types/test_message.py | 61 +++++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 CHANGES/662.feature diff --git a/CHANGES/662.feature b/CHANGES/662.feature new file mode 100644 index 00000000..3a92b141 --- /dev/null +++ b/CHANGES/662.feature @@ -0,0 +1 @@ +add aliases for edit/delete reply markup to Message diff --git a/aiogram/types/message.py b/aiogram/types/message.py index 52acd9f6..1f2fd996 100644 --- a/aiogram/types/message.py +++ b/aiogram/types/message.py @@ -14,6 +14,7 @@ if TYPE_CHECKING: # pragma: no cover CopyMessage, DeleteMessage, EditMessageCaption, + EditMessageReplyMarkup, EditMessageText, SendAnimation, SendAudio, @@ -1788,6 +1789,21 @@ class Message(TelegramObject): reply_markup=reply_markup, ) + def edit_reply_markup( + self, + reply_markup: Optional[InlineKeyboardMarkup] = None, + ) -> EditMessageReplyMarkup: + from ..methods import EditMessageReplyMarkup + + return EditMessageReplyMarkup( + chat_id=self.chat.id, + message_id=self.message_id, + reply_markup=reply_markup, + ) + + def delete_reply_markup(self) -> EditMessageReplyMarkup: + return self.edit_reply_markup(reply_markup=None) + def edit_caption( self, caption: str, diff --git a/tests/test_api/test_types/test_message.py b/tests/test_api/test_types/test_message.py index bea20f08..cb450731 100644 --- a/tests/test_api/test_types/test_message.py +++ b/tests/test_api/test_types/test_message.py @@ -7,6 +7,7 @@ from aiogram.methods import ( CopyMessage, DeleteMessage, EditMessageCaption, + EditMessageReplyMarkup, EditMessageText, SendAnimation, SendAudio, @@ -36,6 +37,8 @@ from aiogram.types import ( Document, EncryptedCredentials, Game, + InlineKeyboardButton, + InlineKeyboardMarkup, Invoice, Location, MessageAutoDeleteTimerChanged, @@ -561,6 +564,64 @@ class TestMessage: assert isinstance(method, EditMessageText) assert method.chat_id == message.chat.id + def test_edit_reply_markup(self): + reply_markup = InlineKeyboardMarkup( + inline_keyboard=[ + [ + InlineKeyboardButton( + text="test", + callback_data="test", + ), + ], + ] + ) + reply_markup_new = InlineKeyboardMarkup( + inline_keyboard=[ + [ + InlineKeyboardButton( + text="test2", + callback_data="test2", + ), + ], + ] + ) + + message = Message( + message_id=42, + chat=Chat(id=42, type="private"), + date=datetime.datetime.now(), + reply_markup=reply_markup, + ) + method = message.edit_reply_markup( + reply_markup=reply_markup_new, + ) + assert isinstance(method, EditMessageReplyMarkup) + assert method.reply_markup == reply_markup_new + assert method.chat_id == message.chat.id + + def test_delete_reply_markup(self): + reply_markup = InlineKeyboardMarkup( + inline_keyboard=[ + [ + InlineKeyboardButton( + text="test", + callback_data="test", + ), + ], + ] + ) + + message = Message( + message_id=42, + chat=Chat(id=42, type="private"), + date=datetime.datetime.now(), + reply_markup=reply_markup, + ) + method = message.delete_reply_markup() + assert isinstance(method, EditMessageReplyMarkup) + assert method.reply_markup is None + assert method.chat_id == message.chat.id + def test_edit_caption(self): message = Message( message_id=42, chat=Chat(id=42, type="private"), date=datetime.datetime.now()