Wrapper for editMessageText method written

This commit is contained in:
Davte 2019-07-03 22:29:02 +02:00
parent 12bc2eba44
commit fd815e4c64

View File

@ -840,6 +840,60 @@ class Bot(TelegramBot, ObjectWithDatabase):
)
return sent_message_update
async def edit_message_text(self, text,
chat_id=None, message_id=None,
inline_message_id=None,
parse_mode='HTML',
disable_web_page_preview=None,
reply_markup=None,
update=None):
"""Edit message text, sending new messages if necessary.
This method wraps lower-level `TelegramBot.editMessageText` method.
Pass an `update` to extract a message identifier from it.
"""
if update is not None:
message_identifier = self.get_message_identifier(update)
if 'chat_id' in message_identifier:
chat_id = message_identifier['chat_id']
message_id = message_identifier['message_id']
if 'inline_message_id' in message_identifier:
inline_message_id = message_identifier['inline_message_id']
for i, text_chunk in enumerate(
self.split_message_text(
text=text,
limit=self.__class__.TELEGRAM_MESSAGES_MAX_LEN - 200,
parse_mode=parse_mode
)
):
if i == 0:
edited_message = await self.editMessageText(
text=text_chunk,
chat_id=chat_id,
message_id=message_id,
inline_message_id=inline_message_id,
parse_mode=parse_mode,
disable_web_page_preview=disable_web_page_preview,
reply_markup=reply_markup
)
if chat_id is None:
# Cannot send messages without a chat_id
# Inline keyboards attached to inline query results may be
# in chats the bot cannot reach.
break
else:
await self.send_message(
text=text,
chat_id=chat_id,
parse_mode=parse_mode,
disable_web_page_preview=disable_web_page_preview,
reply_markup=reply_markup,
update=update,
reply_to_update=True,
send_default_keyboard=False
)
return edited_message
async def send_photo(self, chat_id=None, photo=None,
caption=None,
parse_mode=None,