code: def on_receive(self, message):
          
          if self.log_file is not None and message['should_log']:
              message_copy = Message(message['text'],
                                     Metadata(None).__dict__,
                                     message['should_log']).__dict__
              with open(self.log_file, mode='w') as f:
                  f.write(json.dumps(message_copy))
              logger.info(message['metadata']['source'])
          if self.listening_for(message):
              self_thread = self.HandlerThread(self.handle, message)
              self_thread.start()
          self.cleanup()
          for child in self.children:
              child.tell(message)
docs: Handle being informed of a message.
  
          This function is called whenever a Lego receives a message, as
          specified in the pykka documentation.
  
          Legos should not override this function.
  
          :param message:
          :return: