我一整天都在搜索,如果我只是从用户那里获得Teamspeak名称,我找不到如何获得客户端ID。
我当前的代码(仅适用于身份ID):
function tsverification($verification) {
require_once("../ts3phpframework-master/libraries/TeamSpeak3/TeamSpeak3.php");
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://serveradmin:XXXXXX@XXX.XXX.XXX.XX:10011/?server_port=9987&nickname=Poker");
$client = $ts3_VirtualServer->clientGetByUid("$verification");
$ts3_VirtualServer->clientPoke($client, "Poke Message");
}
我自己找到了解决办法:
function tsverification($verification) {
require_once("../ts3phpframework-master/libraries/TeamSpeak3/TeamSpeak3.php");
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://serveradmin:XXXXXX@XXX.XXX.XXX.XX:10011/?server_port=9987&nickname=Poker");
if (substr($verification, -1, 1) == "=" && strlen($verification) == 28) { // Via UID
$client = $ts3_VirtualServer->clientGetByUid("$verification");
$ts3_VirtualServer->clientPoke($client, "Poker poked you.");
} else { // Via Teamspeak Name
$ts3_VirtualServer->clientGetByName("$verification")->poke("Poker poked you.");
}
}
您可以使用getUniqueId()函数,它将返回一个惟一的id。查看官方文档:https://docs.planetteamspeak.com/ts3/php/framework/class_team_speak3___node___client.html#a55de8c3f5abcf4794b72a1bc464c2cb4
function getUserID($sUsername){
TeamSpeak3::init();
$oTeamSpeak = TeamSpeak3::factory('serverquery://' . Config::$sQueryName . ':' . Config::$sQueryPasswd . '@' . Config::$sServerIP . ':' . Config::$sQueryPort . '/?server_port=' . Config::$sServerPort . '');
$oClient = $oTeamSpeak->clientGetByName($sUsername);
return $oClient->getUniqueId();
}
我尝试了这个方法,它工作
<?php
$msg = $_POST['msg'];
$client = $_POST['client'];
require_once("TeamSpeak3/libraries/TeamSpeak3/TeamSpeak3.php");
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://serveradmin:PASSWORD@IPADDRESS:PORT/?server_port=9987&nickname=USG-Staff");
$ts3_VirtualServer->clientGetByName("$client")->poke("$msg");
?>