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

onTextPreg

Метод onTextPreg создает маршрут, который срабатывает, если текст входящего сообщения соответствует заданному регулярному выражению (PCRE).

Это мощный инструмент для извлечения данных из текста произвольного формата, например, e-mail адресов, номеров телефонов, кодов заказов и т.д.

Параметры

#НазваниеТипОписание
1idstringУникальный идентификатор для этого маршрута.
2patternstring|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();

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