Класс LongPoll
Класс LongPoll
предоставляет альтернативный способ получения обновлений от Telegram API, известный как "длинный опрос". Вместо того чтобы Telegram отправлял обновления на ваш сервер (как в случае с Webhook), ваш скрипт сам постоянно опрашивает серверы Telegram, ожидая новых событий.
Этот метод идеально подходит для:
- Локальной разработки и тестирования бота без необходимости развертывать его на публичном сервере.
- Случаев, когда у вас нет возможности использовать HTTPS или настраивать веб-сервер.
Подключение и инициализация
Скрипт с LongPoll
должен запускаться из командной строки и работать непрерывно.
<?php
// bot.php
require_once __DIR__ . 'vendor/autoload.php';
use ZhenyaGR\TGZ\LongPoll;
use ZhenyaGR\TGZ\TGZ;
use ZhenyaGR\TGZ\Bot;
// 1. Создаем экземпляр LongPoll с токеном вашего бота
$longpoll = LongPoll::create('ВАШ_ТОКЕН_БОТА');
// 2. Запускаем прослушивание обновлений
$longpoll->listen(function(TGZ $tg) {
// Эта функция будет вызываться для каждого нового обновления.
// В $tg передается готовый к работе экземпляр TGZ.
// Для удобства используем конструктор Bot
$bot = new Bot($tg);
// --- Описываем логику бота ---
$bot->onBotCommand('start', '/start')
->text('Привет! Я работаю через LongPoll.');
$bot->onText('time', 'время')
->text('Текущее время: ' . date('H:i:s'));
$bot->onDefault()
->text('Я не знаю такой команды.');
// ----------------------------
// Запускаем роутер для обработки текущего обновления
$bot->run();
});
Как запустить
- Сохраните код в файл, например,
bot.php
. - Откройте терминал (командную строку) в директории с файлом.
- Выполните команду:
php bot.php
. - Процесс запустится и будет ожидать обновлений. Не закрывайте терминал.
Для работы в фоновом режиме
На сервере для непрерывной работы скрипта рекомендуется использовать утилиты вроде screen
, tmux
или менеджеры процессов, такие как supervisor
.
Методы класса
create
Статический метод для создания экземпляра класса LongPoll
.
# | Название | Тип | Описание |
---|---|---|---|
1 | token | string | Токен вашего Telegram бота, полученный от @BotFather. |
Возвращает: LongPoll
- экземпляр класса LongPoll
.
listen
Запускает основной цикл "длинного опроса". Метод будет бесконечно получать обновления и передавать их в функцию-обработчик.
# | Название | Тип | Описание |
---|---|---|---|
1 | handler | callable | Функция (замыкание), которая будет вызвана для каждого полученного обновления. В нее передается экземпляр TGZ . |
Возвращает: void