Pobieranie listy klientów
W tym poradniku zobaczycie w jaki sposób pobierać listę klientów, czym ona jest i dlaczego nie zawsze nam ona zadziała...
// Pobieramy klientów z serwera
$clients = $ts->clientList();
W poprzednim poradniku była mowa o błędach w php. Warto już teraz nauczyć się korzystać z bloków try/catch. Kod po pewnej modyfikacji wyglądałby tak:
// Pobieramy klientów z serwera
try{
$clients = $ts->clientList();
}
catch(Exception $e){
// Przypiszmy błąd do $e
// Wyświetlmy kod błędu oraz jego treść
echo 'Nie udało pobrać się listy klientów | Kod błędu: '.$e->getCode().' oraz treść błędu: '.$e->getMessage().'';
}
Teraz, gdy nie uda nam się pobrać listy klientów, skrypt nie zatrzyma się, ale wyświetli błąd, który wystąpił. Przy pobieranie klientów, kanałów - takie błędy (jeśli będą się w ogóle zdarzać) będą zazwyczaj spowodowane utratą połączenia z serwerem.
Mam listę klientów, ale jak to?
Każdy klient jest obiektem, możemy wykonywać na nim odpowiednie funkcje, a dzięki złożoności funkcjonalności tego frameworka mamy do dyspozycji na prawdę potężne narzędzia.
Od teraz $clients
jest tablicą z obiektami, którymi są użytkownicy, co oznacza, że możemy wykonać funkcję foreach()
.
// Wyświetlanie listy klientów.
foreach($clients as $client){
echo $client['client_nickname']."\n";
}
Powyższy skrypt wyświetli nam listę klientów posortowanych client_id
.
Do czego mam dostęp? Co mogę wyświetlić?
Zastanawiacie się zapewne, skąd mamy mieć pojęcie jakich możemy użyć danych? Co takiego możemy wykorzystać? Możemy to sprawdzić za pomocą funkcji getInfo()
. Pozwala ona na wyświetlenie wszystkich dostępnych informacji o danym obiekcie. Np:
// Pobieramy pierwszego klienta z brzegu
reset($clients);
$user = current($clients);
// Wyświetlamy o nim informacje
var_dump(array_keys($user->getInfo()));
Skrypt zwróci:
[0] => clid
[1] => cid
[2] => client_database_id
[3] => client_nickname
[4] => client_type
[5] => client_away
[6] => client_away_message
[7] => client_flag_talking
[8] => client_input_muted
[9] => client_output_muted
[10] => client_input_hardware
[11] => client_output_hardware
[12] => client_talk_power
[13] => client_is_talker
[14] => client_is_priority_speaker
[15] => client_is_recording
[16] => client_is_channel_commander
[17] => client_unique_identifier
[18] => client_servergroups
[19] => client_channel_group_id
[20] => client_channel_group_inherited_channel_id
[21] => client_version
[22] => client_platform
[23] => client_idle_time
[24] => client_created
[25] => client_lastconnected
[26] => client_icon_id
[27] => client_country
[28] => connection_client_ip
[29] => client_badges
[30] => client_outputonly_muted
[31] => client_default_channel
[32] => client_meta_data
[33] => client_version_sign
[34] => client_security_hash
[35] => client_login_name
[36] => client_totalconnections
[37] => client_flag_avatar
[38] => client_talk_request
[39] => client_talk_request_msg
[40] => client_description
[41] => client_month_bytes_uploaded
[42] => client_month_bytes_downloaded
[43] => client_total_bytes_uploaded
[44] => client_total_bytes_downloaded
[45] => client_nickname_phonetic
[46] => client_needed_serverquery_view_power
[47] => client_default_token
[48] => client_base64HashClientUID
[49] => connection_filetransfer_bandwidth_sent
[50] => connection_filetransfer_bandwidth_received
[51] => connection_packets_sent_total
[52] => connection_bytes_sent_total
[53] => connection_packets_received_total
[54] => connection_bytes_received_total
[55] => connection_bandwidth_sent_last_second_total
[56] => connection_bandwidth_sent_last_minute_total
[57] => connection_bandwidth_received_last_second_total
[58] => connection_bandwidth_received_last_minute_total
[59] => connection_connected_time
Dzięki temu poleceniu wyświetlą nam się wszystkie dostępne klucze, do których mamy dostęp traktując obiekt jako tablicę z danymi. Oznacza to, że do każdej danej dostajemy się, jak do zwykłej tablicy, tj. $user['client_database_id']
zwróci nam ID użytkownika w bazie danych serwera.
Za pomocą funkcji getInfo()
dostaniesz się również do informacji na temat obiektu, którym będzie w przyszłych poradnikach np. kanał, ranga serwerowa lub ranga kanałowa.
Zastosowanie?
// Przykład
echo $client['client_nickname']." aktualnie przebywa na kanale od ID: ".$client['cid'];
- wyświetlanie użytkowników online
- na serwerze
- na kanale
- o konkretnym nicku itp.
- wyszukiwanie klientów
- przenoszenie AFK
- sprawdzanie starych wersji klientów i ostrzeganie przed możliwością crashowania
- wiele innych
W przyszłych poradnikach dowiecie się jak utworzyć skrypty do automatyzacji serwera, w oparciu o funkcje przedstawione powyżej. #Chcesz dowiedzieć się czegoś więcej? Pytaj w komentarzu.
Więcej na temat całego frameworku dowiecie się z oficjalnej strony dokumentacji: https://docs.planetteamspeak.com/ts3/php/framework/