Dokumentacja tworzenia komend w języku PHP

Wysyłanie wiadomości na czat

Do wysyłania wiadomości uyjemy klasy GGC oraz jej metody message, pamiętaj, aby wcześniej ją zainicjować. Pierwszy parametr metody to treść wiadomości, drugi (opcjonalny) numer uytkownika do którego ma trafić wiadomość lub tablica numerów.


$ggc = new GGC();
$ggc->message("Przykładowa wiadomość"); // Wiadomość do osoby uywającej komendy
$ggc->message("Przykładowa wiadomość", 123456); // Wiadomość do wybranego numeru GG (Numer musi przynajmniej raz napisać do czatu, aby wiadomość doszła)
$ggc->message("Przykładowa wiadomość", [123456, 6819810, 978913]); // Przykład wysłania do wielu numerów
$ggc->message("Przykładowa wiadomość", $aktywni); // Wiadomość wysłana do wszystkich zalogowanych
   	   

W komendach staraj się nie uzywać echo, korzystaj w powyzszych funkcji.

Odczytywanie wiadomości uzytkownika

Aby pobrać wiadomość wysłaną przez uzytkownika uzyj $parts, jest to tablica, kazde slowo jest rozdzielone. Np. uzytkownik wysyła wiadomość o treści "/kick nick powod"


print_r($parts);
// wyświetli 
Array
(
[0] -> .kick
[1] -> nick
[2] -> powód
)
		

Jak widać $parts[0] zawsze będzie zawierać nazwę komendy, w ten sposób mozemy pobrać tyle argumentów komendy ile potrzebujemy lub połączyć wiadomość za pomocą implode(). ponizej prosta komenda wyświetlajaca tekst do zalogowanych osób


$ggc = new GGC();

if (!isset($parts[1])) {
	// Sprawdzanie czy uzytkownik podał jakas wiadomość, $parts[0] nie bierzemy pod uwagę bo to nazwa komendy
	$ggc->message("Podaj treść wiadomości");
} else {
	unset($parts[0]); // usuwamy nazwe komendy z wiadomości
	$msg = implode(" ", $parts); // łączymy tablice w wiadomość
	$ggc->message($msg, $aktywni) // wysyłamy wiadomość
}
		

Kolejny przykład jak za pomocą $parts odczytac wiadomość aby np. wpisując /komenda 1 wykonać jeden kod a wpisując /komenda 2 inny


$ggc = new GGC();
$cmd = isset($parts[1]) ? $parts[1] : '';
if ($cmd == 1) {
	// kod wykonywany po wpisaniu /komenda 1
} else if ($cmd == 2) {
	// kod wykonywany po wpisaniu /komenda 2
} else {
	$ggc->message("Wpisz /komenda 1 lub 2");
}
		

Globalne zmienne

W kodzie komendy mozesz uzywać następujących zmiennych:

Zmienna Wartośc
$from Numer GG uzytkownika który uzywa komende
$to Numer czatu
$user Dane uzytkownika który uzywa komende zawarte w tablicy (patrz Pobieranie danych uytkownika)
$nick Nick uzytkownika ktory uzywa komende, bez widocznych rang, znaczku itd.
$nickk Nick uzytkownika ktory uzywa komende, z widocznymi rangami, znaczkami itd.
monety2 Nagroda w postaci monet za osiągniecie kolejnego lvlu
exp Aktualne exp
exp2 Wymagane exp do następnego poziomu
ban Czy uytkownik ma bana (1 lub 0)
ban_start Data nadania bana w UNIX

Pobieranie danych użytkownika

Do pobierania danych uzywamy klasy Users, jeśli chcemy pobrać dane jednego uzytkownika po numerze lub nicku uzyjemy metody get. Przykład:


$users = new Users();
$dataUser = $users->get(123456); // zamiast numeru mozemy podać nick, w przypadku nie znalezienia uzytkownika metoda zwróci wartość false
print_r($dataUser);
// wynik

    [top1] => 24263
    [top2] => 82652
    [top3] => 382330
    [rejestracja] => 1508949125
    [aktywny] => 1722273351
    [ban] => 0
    [ban_start] => 1706812682
    [ban_czas] => 0
    [ban_kto] => 0
    [ban_powod] => 0
    [poziom] => 3
    [exp] => 201
    [exp2] => 230
    [monety] => 1000
    [monety2] => 4900
    [spy] => 0
    [slub] => 1
    [vip] => 0
    [poleca] => 1
    [poleca_data] => 1658667258
    [polecani] => 1
    [ankieta] => 0
    [zgodapriv] => 1
    [zgoda_priv] => 1
    [mute] => 0
    [mute_kto] => 0
    [mute_czas] => 0
    [mute_powod] => 0
    [typ] => 1
    [zw] => 0
    [quitczas] => 1634474211
    [rozsypanka] => Woda
    [avatar] => 0
    [autokorekta] => 0
    [spadalec] => 60891898
    [spadalec_ruch] => 1
    [spadalec_gotowy] => 0
    [spadalec_proby] => 10
    [WYPISZ] => 0
    [poleca_nr] => 65416356
    [klucze] => 9238
    [rozsypanka_czas] => 0
    [diamenty] => 30
    [wlasciciel] => 1
    [glowny_wl] => 1
    [priv] => 1
    [ocena] => 0
    [logowania] => 236
    [skr_podania] => 1
    [skr_globale2] => 1
    [msg_admins] => 0
    [ostatnia_zmiana_staffu] => 1667130281
    [token] => 7f2c507f0d78d4503e221b3f88d4cb32ad6f9379c94ad78e4c
    [time_spent] => 6
)
		

Powyzszy kod zwróci tablice z danymi uytkownika

Parametr Opis
numer Numer GG uzytkownika
nick Nick uzytkownika
rejestracja Czas rejetracji zapisana w formacie UNIX
aktywny Czas ostatniej aktywności w formacie UNIX
monety Monety uzytkownika
monety2 Nagroda w postaci monet za osiągniecie kolejnego lvlu
exp Aktualne exp
exp2 Wymagane exp do następnego poziomu
ban Czy uytkownik ma bana (1 lub 0)
ban_start Data nadania bana w UNIX

Wyszukiwanie użytkowników

Do wyszukiwania użytkowników również użyjemy klasy Users. Metody do obsługi poniżej:


$users = new Users();
$users->setSearchValue([parametr], [operator], [wartość]); // Ustawiamy parametry które ma spełnić wyszukiwanie, Parametrów używamy tych samych jak w "Pobieranie danych użytkownika", operatorem moze byc np. =, >, <
$users->setSearchLimit([limit]); // Ustawiamy limit wyników, Domyślnie 100
$result = $users->getSearchUser(); // Pobieramy wyniki, Wynikiem bedzie tablica z danymi uzytkowników, lub false w przypadku braku wyników
$users->clear(); // Resetujemy filtry
    	

Gdy chcesz wyszukać uzytkownika po numerze gg lub nicku, skorzystaj z gotowej metody get() opisanej wcześniej. Ponizej przykład komendy wyświetlajacej liste osob ktorzy maja bana:


$ggc = new GGC();
$users = new Users();

$users->setSearchValue('ban', '=', '1'); // Szukamy osob ktore posiadaja ban = 1`
$results = $users=>getSearchValue(); // Pobieramy wyniki
$users->clear(); // Czyścimy filtry

if ($results) {
	$message = "Osoby posiadające bany:\n\n";
	foreach ($results as $index => $dataUser) {
		$nick = $dataUser['nick'];
		$data = date('d.m.Y', $dataUser['ban_start']);
		$message .= "$nick - $data"; // Dodawanie do listy
	}

	$ggc->message($message);
} else {
	$ggc->message("Aktualnie nie ma zadnych banów");
}

    	

Edycja danych uzytkowników

Edytowanie uzytkowników musimy łączyć z metodami wyszukiwania, od razu przejdzmy do przykładu. Komenda zmieniająca opis uzytkownika, uzycie komendy będzie następujące: /zmienopis nick nowy opis


$ggc = new GGC();
$users = new Users();

if(!isset($parts[2])) {
	$ggc->message("Wpisz /zmienopis nick nowy opis");
} else if (!$dataUser = $user->get($parts[1])) { // wyszukiwanie uzytkownika po nicku lub numerze
	$ggc->message("Podany uzytkownik nie istnieje");
} else {
	$gg = $dataUser['numer']; // pobieramy numer gg uzytkownika
	$users->setValuesSearch('numer', '=', $gg); // szukamy uzytkownika po numerze
	$users->setLimitSearch(1); // Zmieniamy limit wyszukiwania na 1
	$result = $users->getSearchUsers();
	if ($result) { // uzytkownik znaleziony, mozemy edytować
		$users->setUpdateValues('opis', $text); // Zmieniamy opis
		$users->updateValuesUsers(); // zapisujemy nowe dane uzytkownika
		$users->clear(); // pamietaj o resetowaniu
		$ggc->message("Twój opis został zmieniony.", $gg); // wysłanie powiadomienia
		$ggc->message("Zmieniono opis");
	} else {
		$ggc->message("Wystąpił błąd");
	}
}
    	

Chcesz zmienić więcej danych? Nie ma problemu, mozesz uzywać kilka razy metody setUpdateValues


...
$users->setUpdateValues('opis', 'Nowy opis');
$users->setUpdateValues('spy', 0); // wyrzucenie ze spy
...
    	 

Pobieranie oraz edytowanie ustawień czatu

Do pobrania ustawień czatu uzyjemy klasy GGC oraz jej metody getChatData() Wynikiem będzie tablica z ponizszymi ustawieniami:


$ggc = new GGC();
$dataChat = $ggc->getChatData();
print_r($dataChat);
    	

Dodawanie rang

Aby dodać nową rangę na czat skorzystamy z klasy Ranks i jej metody addRang


$ranks = new Ranks();
$result = $ranks->addRank(
						"Nazwa rangi", 
						"Znaczek rangi",
						0, // Cena rangi w postaci monet w sklepie, jeśli wpiszesz 0 to nie będzie widoczna w komendzie /sklep
						10 // Automatyczne nadanie rangi od osiagniętego poziomu, w tyym przypadku otrzyma ją kazdy uzuykownik który osiągnie 10 poziom
						);
print_r($result); // Jeśli rangę uda się dodać, wynikiem będzie ID nowej rangi, w innym przypadku zwróci false
    	

Przykład komendy dodającą nową rangę. Uzycie /nowaranga [Nazwa rangi]|[Znaczek rangi]


$ggc = new GGC();
if (!isset($parts[1])) {
	$ggc->message("Wpisz $parts[0] [Nazwa rangi]|[Znaczek rangi]");
} else {
	unset($parts[0]); // usuwamy nazwę wpisanej komendy z wiadomosci
	$message = implode(" ", $parts); // Łączymy $parts w jeden ciąg słow
	// Parsowanie argumentów
	$args = explode('|', $message, 2);
	if (!isset($args[1])) {
		// Sprawdzanie czy podano Nazwe i znaczek oddzielony znakiem |
		$ggc->message("Wpisz $parts[0] [Nazwa rangi]|[Znaczek rangi]");
	} else {
		$name = $args[0]; // Nazwa rangi
		$sign = $args[1]; // Znaczek rangi
		$ranks = new Ranks();
		$rankID = $ranks->newRank($name, $sign); // Tworzymy nową rangę
		if ($rankID) {
			$ggc->message("Została utworzona nowa ranga $name, jej ID to $rankID");
		} else {
			$ggc->message("Nie udało się dodać rangi");
		}
	}
}