code: def fetchThreadMessages(self, thread_id=None, limit=20, before=None):
          
          thread_id, thread_type = self._getThread(thread_id, None)
  
          params = {
              "id": thread_id,
              "message_limit": limit,
              "load_messages": True,
              "load_read_receipts": True,
              "before": before,
          }
          j = self.graphql_request(GraphQL(doc_id="1860982147341344", params=params))
  
          if j.get("message_thread") is None:
              raise FBchatException("Could not fetch thread {}: {}".format(thread_id, j))
  
          messages = [
              Message._from_graphql(message)
              for message in j["message_thread"]["messages"]["nodes"]
          ]
          messages.reverse()
  
          read_receipts = j["message_thread"]["read_receipts"]["nodes"]
  
          for message in messages:
              for receipt in read_receipts:
                  if int(receipt["watermark"]) >= int(message.timestamp):
                      message.read_by.append(receipt["actor"]["id"])
  
          return messages
docs: Get the last messages in a thread
  
          :param thread_id: User/Group ID to get messages from. See :ref:`intro_threads`
          :param limit: Max. number of messages to retrieve
          :param before: A timestamp, indicating from which point to retrieve messages
          :type limit: int
          :type before: int
          :return: :class:`models.Message` objects
          :rtype: list
          :raises: FBchatException if request failed