docs: def get_players(self, name=None, platform=None, uid=None):
          """|coro|
  
          get a list of players matching the term on that platform,
          exactly one of uid and name must be given, platform must be given,
          this list almost always has only 1 element, so it's easier to use get_player
  
          Parameters
          ----------
          name : str
              the name of the player you're searching for
          platform : str
              the name of the platform you're searching on (See :class:`Platforms`)
          uid : str
              the uid of the player you're searching for
  
          Returns
          -------
          list[:class:`Player`]
              list of found players"""
  
          if name is None and uid is None:
              raise TypeError("name and uid are both None, exactly one must be given")
  
          if name is not None and uid is not None:
              raise TypeError("cannot search by uid and name at the same time, please give one or the other")
  
          if platform is None:
              raise TypeError("platform cannot be None")
  
          if "platform" not in self.cache: self.cache[platform] = {}
  
          if name:
              cache_key = "NAME:%s" % name
          else:
              cache_key = "UID:%s" % uid
  
          if cache_key in self.cache[platform]:
              if self.cachetime > 0 and self.cache[platform][cache_key][0] < time.time():
                  del self.cache[platform][cache_key]
              else:
                  return self.cache[platform][cache_key][1]
  
          if name:
              data = yield from self.get("https://public-ubiservices.ubi.com/v2/profiles?nameOnPlatform=%s&platformType=%s" % (parse.quote(name), parse.quote(platform)))
          else:
              data = yield from self.get("https://public-ubiservices.ubi.com/v2/users/%s/profiles?platformType=%s" % (uid, parse.quote(platform)))
  
          if "profiles" in data:
              results = [Player(self, x) for x in data["profiles"] if x.get("platformType", "") == platform]
              if len(results) == 0: raise InvalidRequest("No results")
              if self.cachetime != 0:
                  self.cache[platform][cache_key] = [time.time() + self.cachetime, results]
              return results
          else:
              raise InvalidRequest("Missing key profiles in returned JSON object %s" % str(data))