13.08.2019, 10:55
Poradnik stworzony dla wersji pluginu 1.5.0+
1 Tworzenie pliku z informacjami o komendzie
Utwórz nowy plik z nazwą
Kod:
{
"tag": "test",
"name": "Testowa komenda",
"command": "test",
"description": "Tutaj jest opis komendy",
"activated": 1
}
Wpisuj komende bez prefixu!
2 Tworzenie pliku php
Utwórz nowy plik z nazwą
Kod PHP:
<?php
declare(strict_types=1);
namespace Qwizi\DVZSB\Commands; // Ustawiamy namespace
use Qwizi\DVZSB\Interfaces\ModRequiredInterface; // Dołączamy interface jeżeli chcemy aby komenda była używana tylko przez Admina/Moda
class TestCmd extends AbstractCommandBase implements ModRequiredInterface // Rozszerzaamy komende o abstrakcyjna klasę AbstractCommandBase oraz implementujemy interface
{
private $pattern = "/^({command})$/"; // Tworzymy pattern dla komendy. W tym wypadku będzie łapać komende /help
public function doAction(array $data): void // Tworzymy metode doAction, która przyjmuje jako argument tablice z ostatnim wpisem na sb
{
if (preg_match($this->createPattern($data['command'], $this->pattern), $data['text'], $matches)) {
$this->lang->load('dvz_shoutbox_bot_test'); // Ładujemy plik z tłumaczeniem dla komendy
if ($a != 0) {
$this->setError("Zmienna $a musi być równa 0"); // Ustawiamy error
}
if (!$this->getError()) { // Jeżeli brak błędów można wykonać jakąś akcje, np. dodać coś do bazy, pobrać, usunąc itp;
$this->setMessage("Testowa komenda została wykonana pomyślnie"); // Ustawiamy wiadomość, którą bot wypisze po wykonanej akcji
}
$this->send()->setReturnedValue([ // Jeżeli wystąpił bląd metoda send() wyświetli go. W innym przypadku zostanie wyświetlona wiadmość zwrotna ustawiona za pomocą metody setMessage(). Póżniej ustawiamy dane jakie zostaną zwrócone po tej akcji by móc używać ich w hooku dvz_shoutbox_bot_commands_test_commit
'a' => $a
])->run_hook('dvz_shoutbox_bot_commands_test_commit');
// Więcej dostepnych metod możesz podejrzeć w klasie AbstractCommandBase, oraz możesz zobaczyć jak zostały stworzone komendy min. BanCmd.php
}
}
}
Nazwa pliku musi być taka sama jak ustawiona w tagu lecz początek jej musi zaczynać się z dużej litery oraz musi na końcu posiadać dopisek Cmd
Twoja klasa musi zostać rozszerzona o klasę abstrakcyjną AbstractCommandBase, oraz musi posiadać metode doAction i właściwość $pattern
Jeżeli chcesz aby komenda była używana tylko przez admina/moda, dołącz interface ModRequiredInterface oraz zaimplementuj go.
3 Przeładowanie komend w acp
Przejdź w acp do
[attachment=14768]
Jeżeli wykonałeś powyższe kroki poprawnie, twoja komenda powinna pojawić się w tabelce.