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

func

Метод func позволяет назначить произвольную функцию (замыкание или любой другой callable) в качестве обработчика для маршрута. Это самый гибкий способ обработки событий, так как вы получаете полный контроль над логикой ответа.

Если для маршрута задан func, то автоматическая отправка сообщений через text(), img() и др. будет проигнорирована.

Параметры

#НазваниеТипОписание
1handlercallableФункция, которая будет вызвана при срабатывании маршрута.

Возвращает

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

Аргументы обработчика

  • TGZ - экземпляр класса. Ваша функция может принимать аргументы, извлеченные из сообщения пользователя:
  • Для onBotCommand: аргументы после команды (например, для /start 123 аргументом будет 123).
  • Для onCommand: значения, соответствующие плейсхолдерам (%w, %n, %s).
  • Для onTextPreg: массив совпадений из preg_match.

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

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

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

// Пример с onCommand и аргументами
$bot->onCommand('ban', '!ban %w %s')
    ->func(function(TGZ $tg, string $username, string $reason) {
        // Здесь может быть ваша логика: запись в БД, проверка прав и т.д.
        $tg->msg("✅ Пользователь `{$username}` забанен по причине: `{$reason}`")
           ->parseMode('MarkdownV2')
           ->send();
    });

// Пример с onTextPreg для извлечения данных
$bot->onTextPreg('order', '/заказ номер (\d+)/i')
    ->func(function(TGZ $tg, array $matches) {
        $orderId = $matches[1];
        // Логика поиска заказа в базе данных
        $status = "в пути"; // Пример
        $tg->msg("Статус вашего заказа №{$orderId}: {$status}")->send();
    });

// Пример с onCallback, где нужна сложная логика
$bot->btn('confirm_delete', 'Да, удалить')
    ->func(function(TGZ $tg) {
        $query_id = $tg->getQueryID();
        // Логика удаления...
        $tg->msg("Запись удалена.")->editText();
        $tg->answerCallbackQuery($query_id);
    });


$bot->run();

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