run
Метод run
является "сердцем" роутера. Он запускает процесс сопоставления (диспетчеризации) входящего обновления с определенными вами маршрутами.
Обычно run()
вызывается один раз в конце вашего скрипта без параметров.
Параметры
# | Название | Тип | Описание |
---|---|---|---|
1 | id | string | Необязательный. ID маршрута (btn , onCommand и т.д.), который нужно запустить принудительно, игнорируя входящее обновление. |
Возвращает
void
— метод ничего не возвращает.
Сценарии использования
1. Стандартный режим (обработка вебхука или Long Poll)
В этом режиме run()
вызывается без аргументов. Он анализирует текущее обновление, находит подходящий маршрут и выполняет связанное с ним действие.
php
<?php
// ... определение всех маршрутов бота ...
$bot->onBotCommand('start', '/start')->text('Привет!');
$bot->onText('hello', 'Привет')->text('И тебе привет!');
// Запускаем обработку текущего обновления
$bot->run();
2. Принудительный запуск действия
Вы можете запустить любой обработчик напрямую, передав его ID в метод run()
. Это крайне полезно для задач, выполняемых по расписанию (cron), или для запуска определенных сценариев из других частей вашего приложения.
php
<?php
// bot.php
// ... определение всех маршрутов бота ...
$bot->onCommand('daily_report', 'make_report')
->func(function() use ($tg) {
// ... сложная логика формирования отчета ...
$reportText = "Отчет за сегодня: ...";
$tg->sendMessage(ADMIN_CHAT_ID, $reportText);
});
// cron.php - этот скрипт запускается по расписанию
require_once 'bot.php';
// Принудительно запускаем обработчик с ID 'daily_report'
// Контекст пользователя (chat_id, user_id) будет пустым,
// поэтому внутри обработчика нужно использовать заранее известные ID.
$bot->run('daily_report');