Queer European MD passionate about IT
Forráskód Böngészése

Handle text message updates according to their subtype

Davte 5 éve
szülő
commit
80c746df20
1 módosított fájl, 269 hozzáadás és 0 törlés
  1. 269 0
      davtelepot/bot.py

+ 269 - 0
davtelepot/bot.py

@@ -74,6 +74,39 @@ class Bot(TelegramBot):
             'pre_checkout_query': self.pre_checkout_query_handler,
             'poll': self.poll_handler,
         }
+        self.message_handlers = {
+            'text': self.text_message_handler,
+            'audio': self.audio_message_handler,
+            'document': self.document_message_handler,
+            'animation': self.animation_message_handler,
+            'game': self.game_message_handler,
+            'photo': self.photo_message_handler,
+            'sticker': self.sticker_message_handler,
+            'video': self.video_message_handler,
+            'voice': self.voice_message_handler,
+            'video_note': self.video_note_message_handler,
+            'contact': self.contact_message_handler,
+            'location': self.location_message_handler,
+            'venue': self.venue_message_handler,
+            'poll': self.poll_message_handler,
+            'new_chat_members': self.new_chat_members_message_handler,
+            'left_chat_member': self.left_chat_member_message_handler,
+            'new_chat_title': self.new_chat_title_message_handler,
+            'new_chat_photo': self.new_chat_photo_message_handler,
+            'delete_chat_photo': self.delete_chat_photo_message_handler,
+            'group_chat_created': self.group_chat_created_message_handler,
+            'supergroup_chat_created': (
+                self.supergroup_chat_created_message_handler
+            ),
+            'channel_chat_created': self.channel_chat_created_message_handler,
+            'migrate_to_chat_id': self.migrate_to_chat_id_message_handler,
+            'migrate_from_chat_id': self.migrate_from_chat_id_message_handler,
+            'pinned_message': self.pinned_message_message_handler,
+            'invoice': self.invoice_message_handler,
+            'successful_payment': self.successful_payment_message_handler,
+            'connected_website': self.connected_website_message_handler,
+            'passport_data': self.passport_data_message_handler
+        }
         self._under_maintenance = False
         self._allowed_during_maintenance = []
         self._maintenance_message = None
@@ -270,6 +303,242 @@ class Bot(TelegramBot):
         )
         return
 
+    async def text_message_handler(self, update):
+        """Handle `text` message update."""
+        replier, reply = None, None
+        text = update['text'].lower()
+        user_id = update['from']['id'] if 'from' in update else None
+        if user_id in self.custom_text_message_handlers:  # Custom handler
+            replier = self.custom_text_message_handlers[user_id]
+            del self.custom_text_message_handlers[user_id]
+        elif text.startswith('/'):  # Command handler
+            # A command must always start with the ‘/’ symbol and may not be
+            # longer than 32 characters.
+            # Commands can use latin letters, numbers and underscores.
+            print(text)
+            command = re.search(
+                r"([A-z_1-9]){1,32}",
+                text
+            ).group(0)  # Get the first group characters matching pattern
+            if command in self.commands:
+                replier = self.commands[command]['function']
+            elif update['chat']['id'] > 0:
+                replier = self.unknown_command_message
+        else:  # Check alias and text parsers
+            logging.info("#TODO alias and text parsers")
+        if replier:
+            if asyncio.iscoroutinefunction(replier):
+                reply = await replier(update)
+            else:
+                reply = replier(update)
+        if reply:
+            if type(reply) is str:
+                reply = dict(text=reply)
+            try:
+                return await self.send_message(update=update, **reply)
+            except Exception as e:
+                logging.error(
+                    f"Failed to handle text message:\n{e}",
+                    exc_info=True
+                )
+        return
+
+    async def audio_message_handler(self, update):
+        """Handle `audio` message update."""
+        logging.info(
+            "A audio message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def document_message_handler(self, update):
+        """Handle `document` message update."""
+        logging.info(
+            "A document message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def animation_message_handler(self, update):
+        """Handle `animation` message update."""
+        logging.info(
+            "A animation message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def game_message_handler(self, update):
+        """Handle `game` message update."""
+        logging.info(
+            "A game message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def photo_message_handler(self, update):
+        """Handle `photo` message update."""
+        logging.info(
+            "A photo message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def sticker_message_handler(self, update):
+        """Handle `sticker` message update."""
+        logging.info(
+            "A sticker message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def video_message_handler(self, update):
+        """Handle `video` message update."""
+        logging.info(
+            "A video message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def voice_message_handler(self, update):
+        """Handle `voice` message update."""
+        logging.info(
+            "A voice message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def video_note_message_handler(self, update):
+        """Handle `video_note` message update."""
+        logging.info(
+            "A video_note message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def contact_message_handler(self, update):
+        """Handle `contact` message update."""
+        logging.info(
+            "A contact message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def location_message_handler(self, update):
+        """Handle `location` message update."""
+        logging.info(
+            "A location message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def venue_message_handler(self, update):
+        """Handle `venue` message update."""
+        logging.info(
+            "A venue message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def poll_message_handler(self, update):
+        """Handle `poll` message update."""
+        logging.info(
+            "A poll message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def new_chat_members_message_handler(self, update):
+        """Handle `new_chat_members` message update."""
+        logging.info(
+            "A new_chat_members message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def left_chat_member_message_handler(self, update):
+        """Handle `left_chat_member` message update."""
+        logging.info(
+            "A left_chat_member message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def new_chat_title_message_handler(self, update):
+        """Handle `new_chat_title` message update."""
+        logging.info(
+            "A new_chat_title message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def new_chat_photo_message_handler(self, update):
+        """Handle `new_chat_photo` message update."""
+        logging.info(
+            "A new_chat_photo message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def delete_chat_photo_message_handler(self, update):
+        """Handle `delete_chat_photo` message update."""
+        logging.info(
+            "A delete_chat_photo message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def group_chat_created_message_handler(self, update):
+        """Handle `group_chat_created` message update."""
+        logging.info(
+            "A group_chat_created message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def supergroup_chat_created_message_handler(self, update):
+        """Handle `supergroup_chat_created` message update."""
+        logging.info(
+            "A supergroup_chat_created message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def channel_chat_created_message_handler(self, update):
+        """Handle `channel_chat_created` message update."""
+        logging.info(
+            "A channel_chat_created message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def migrate_to_chat_id_message_handler(self, update):
+        """Handle `migrate_to_chat_id` message update."""
+        logging.info(
+            "A migrate_to_chat_id message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def migrate_from_chat_id_message_handler(self, update):
+        """Handle `migrate_from_chat_id` message update."""
+        logging.info(
+            "A migrate_from_chat_id message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def pinned_message_message_handler(self, update):
+        """Handle `pinned_message` message update."""
+        logging.info(
+            "A pinned_message message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def invoice_message_handler(self, update):
+        """Handle `invoice` message update."""
+        logging.info(
+            "A invoice message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def successful_payment_message_handler(self, update):
+        """Handle `successful_payment` message update."""
+        logging.info(
+            "A successful_payment message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def connected_website_message_handler(self, update):
+        """Handle `connected_website` message update."""
+        logging.info(
+            "A connected_website message update was received, "
+            "but this handler does nothing yet."
+        )
+
+    async def passport_data_message_handler(self, update):
+        """Handle `passport_data` message update."""
+        logging.info(
+            "A passport_data message update was received, "
+            "but this handler does nothing yet."
+        )
+
     @classmethod
     def set_class_maintenance_message(cls, maintenance_message):
         """Set class maintenance message.