code: public function privilegeKeyList($resolve = false)
      {
          $tokens = $this->request("privilegekeylist")->toAssocArray("token");
  
          if ($resolve) {
              foreach ($tokens as $token => $array) {
                  $func = $array["token_type"] ? "channelGroupGetById" : "serverGroupGetById";
  
                  try {
                      $tokens[$token]["token_id1"] = $this->$func($array["token_id1"])->name;
                  } catch (Ts3Exception $e) {
                      /* ERROR_channel_invalid_id */
                      if ($e->getCode() != 0xA00) {
                          throw $e;
                      }
                  }
  
                  try {
                      if ($array["token_type"]) {
                          $tokens[$token]["token_id2"] = $this->channelGetById(
                              $array["token_id2"]
                          )->getPathway();
                      }
                  } catch (Ts3Exception $e) {
                      /* ERROR_permission_invalid_group_id */
                      if ($e->getCode() != 0x300) {
                          throw $e;
                      }
                  }
              }
          }
  
          return $tokens;
      }
docs: Returns a list of privilege keys (tokens) available. If $resolve is set to TRUE the values
  of token_id1 and token_id2 will be translated into the appropriate group and/or channel
  names.
  
  @param  boolean $resolve
  @return array