Перейти к содержимому

onCommand

Метод onCommand создает маршрут для текстовых команд, которые не начинаются со слеша (/). Он идеально подходит для создания команд с аргументами, таких как !ban user123, курс доллара.

Параметры

#НазваниеТипОписание
1idstringУникальный идентификатор для этого маршрута.
2commandstring|arrayШаблон команды или массив шаблонов. Если не указан, используется id.

Возвращает

Action — экземпляр класса Action (Вспомогательный класс), на который можно навешивать дальнейшие действия (text, func и т.д.).

Шаблоны и аргументы

onCommand поддерживает специальные плейсхолдеры для извлечения аргументов:

  • %w (word) — одно слово (любая последовательность символов без пробелов).
  • %n (number) — одно число (последовательность цифр).
  • %s (string) — вся оставшаяся часть строки.

Значения, соответствующие этим плейсхолдерам, будут переданы в качестве аргументов в вашу функцию-обработчик func().

Пример использования

php
<?php
require_once __DIR__ . 'vendor/autoload.php';
use ZhenyaGR\TGZ\TGZ;
use ZhenyaGR\TGZ\Bot;

$tg = TGZ::create('ТОКЕН');
$bot = new Bot($tg);

// Простая команда без аргументов
$bot->onCommand('price', 'цена')
    ->text('Цена товара: 100 руб.');

// Команда с числовым аргументом
// Пользователь пишет: погода 12345
$bot->onCommand('weather', 'погода %n')
    ->func(function(int $cityId) use ($tg) {
        // Логика получения погоды по ID города...
        $tg->msg("Погода для города с ID {$cityId}: солнечно.")->send();
    });

// Команда с несколькими аргументами
// Пользователь пишет: !kick @user_nickname флуд в чате
$bot->onCommand('kick', '!kick %w %s')
    ->func(function(string $username, string $reason) use ($tg) {
        $tg->msg("Пользователь {$username} исключен. Причина: {$reason}.")->send();
    });

// Команда без плейсхолдеров, но с аргументами (работает для простых случаев)
// Пользователь пишет: +additem молоко 2шт
$bot->onCommand('add_item', '+additem')
    ->func(function(string ...$args) use ($tg) {
        $item = implode(' ', $args);
        $tg->msg("Предмет '{$item}' добавлен в список.")->send();
    });

$bot->run();

Опубликовано под лицензией MIT.