onTextPreg
Метод onTextPreg
создает маршрут, который срабатывает, если текст входящего сообщения соответствует заданному регулярному выражению (PCRE).
Это мощный инструмент для извлечения данных из текста произвольного формата, например, e-mail адресов, номеров телефонов, кодов заказов и т.д.
Параметры
# | Название | Тип | Описание |
---|---|---|---|
1 | id | string | Уникальный идентификатор для этого маршрута. |
2 | pattern | string |array | Регулярное выражение (или массив выражений), которому должен соответствовать текст. Если не указан, используется id . |
Возвращает
Action
— экземпляр класса Action
(Вспомогательный класс), на который можно навешивать дальнейшие действия (text
, func
и т.д.).
Обработка совпадений
Массив совпадений, полученный из функции preg_match
, передается в качестве аргумента в обработчик func()
.
Пример использования
php
<?php
require_once __DIR__ . 'vendor/autoload.php';
use ZhenyaGR\TGZ\TGZ;
use ZhenyaGR\TGZ\Bot;
$tg = TGZ::create('ТОКЕН');
$bot = new Bot($tg);
// Маршрут для извлечения email-адреса из текста
// Пользователь пишет: "Моя почта my.email@example.com"
$bot->onTextPreg('find_email', '/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/')
->func(function(TGZ $tg, $email) {
$tg->msg("Спасибо! Я записал ваш email: {$email}")->send();
});
// Маршрут для извлечения суммы и валюты
// Пользователь пишет: "конвертируй 100 USD"
$bot->onTextPreg('converter', '^!конвертация\s+(\d+)\s+(RUB|EUR|USD)$')
->func(function(TGZ $tg, $amount, $currency) {
// ... логика конвертации ...
$result = $amount * 90; // Пример
$tg->msg("{$amount} {$currency} это примерно {$result} RUB.")->send();
});
$bot->run();