code: async def message_handler(self, event):
          
  
          # Note that message_handler is called when a Telegram update occurs
          # and an event is created. Telegram may not always send information
          # about the ``.sender`` or the ``.chat``, so if you *really* want it
          # you should use ``get_chat()`` and ``get_sender()`` while working
          # with events. Since they are methods, you know they may make an API
          # call, which can be expensive.
          chat = await event.get_chat()
          if event.is_group:
              if event.out:
                  sprint('>> sent "{}" to chat {}'.format(
                      event.text, get_display_name(chat)
                  ))
              else:
                  sprint('<< {} @ {} sent "{}"'.format(
                      get_display_name(await event.get_sender()),
                      get_display_name(chat),
                      event.text
                  ))
          else:
              if event.out:
                  sprint('>> "{}" to user {}'.format(
                      event.text, get_display_name(chat)
                  ))
              else:
                  sprint('<< {} sent "{}"'.format(
                      get_display_name(chat), event.text
                  ))
docs: Callback method for received events.NewMessage