code: def _upload(self, files, voice_clip=False):
          
          file_dict = {"upload_{}".format(i): f for i, f in enumerate(files)}
  
          data = {"voice_clip": voice_clip}
  
          j = self._postFile(
              self.req_url.UPLOAD,
              files=file_dict,
              query=data,
              fix_request=True,
              as_json=True,
          )
  
          if len(j["payload"]["metadata"]) != len(files):
              raise FBchatException(
                  "Some files could not be uploaded: {}, {}".format(j, files)
              )
  
          return [
              (data[mimetype_to_key(data["filetype"])], data["filetype"])
              for data in j["payload"]["metadata"]
          ]
docs: Uploads files to Facebook
  
          `files` should be a list of files that requests can upload, see:
          http://docs.python-requests.org/en/master/api/#requests.request
  
          Returns a list of tuples with a file's ID and mimetype