func
Метод func
позволяет назначить произвольную функцию (замыкание или любой другой callable
) в качестве обработчика для маршрута. Это самый гибкий способ обработки событий, так как вы получаете полный контроль над логикой ответа.
Если для маршрута задан func
, то автоматическая отправка сообщений через text()
, img()
и др. будет проигнорирована.
Параметры
# | Название | Тип | Описание |
---|---|---|---|
1 | handler | callable | Функция, которая будет вызвана при срабатывании маршрута. |
Возвращает
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();