Queer European MD passionate about IT
Sfoglia il codice sorgente

Wrapper for editMessageText method written

Davte 5 anni fa
parent
commit
fd815e4c64
1 ha cambiato i file con 54 aggiunte e 0 eliminazioni
  1. 54 0
      davtelepot/bot.py

+ 54 - 0
davtelepot/bot.py

@@ -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,