Webboard

Pełna wersja: DVZ ShoutBox Bot - Tworzenie nowej komendy
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Poradnik stworzony dla wersji pluginu 1.5.0+

1 Tworzenie pliku z informacjami o komendzie


Utwórz nowy plik z nazwąTestCmd.json w inc/plugins/QwiziPlugins/DVZSB/data/ o treści
Kod:
{
 "tag": "test",
 "name": "Testowa komenda",
 "command": "test",
 "description": "Tutaj jest opis komendy",
 "activated": 1
}
Wpisuj komende bez prefixu!

"tag" - jest to unikalny tag dla każdej komendy, musi zaczynać się z małej litery.
"name" - Nazwa komendy wyświetlana w acp.
"command" - Komenda, która będzie wpisywania na czacie.
"description" - Jak sama nazwa wskazuje jest to opis komendy wyświetlany w acp oraz jak użyje się komendy /help.
"activated" - Określa czy komenda ma być aktywna.

2 Tworzenie pliku php


Utwórz nowy plik z nazwąTestCmd.phpw inc/plugins/QwiziPlugins/DVZSB/src/Commands/ o przykładowej treści
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 Użytkownicy i grupy -> DVZ ShoutBox Bot i kliknij w Przeładuj komendy.
[attachment=14768]
Jeżeli wykonałeś powyższe kroki poprawnie, twoja komenda powinna pojawić się w tabelce.