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

Класс LongPoll

Класс LongPoll предоставляет альтернативный способ получения обновлений от Telegram API, известный как "длинный опрос". Вместо того чтобы Telegram отправлял обновления на ваш сервер (как в случае с Webhook), ваш скрипт сам постоянно опрашивает серверы Telegram, ожидая новых событий.

Этот метод идеально подходит для:

  • Локальной разработки и тестирования бота без необходимости развертывать его на публичном сервере.
  • Случаев, когда у вас нет возможности использовать HTTPS или настраивать веб-сервер.

Подключение и инициализация

Скрипт с LongPoll должен запускаться из командной строки и работать непрерывно.

php
<?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();
});

Как запустить

  1. Сохраните код в файл, например, bot.php.
  2. Откройте терминал (командную строку) в директории с файлом.
  3. Выполните команду: php bot.php.
  4. Процесс запустится и будет ожидать обновлений. Не закрывайте терминал.

Для работы в фоновом режиме

На сервере для непрерывной работы скрипта рекомендуется использовать утилиты вроде screen, tmux или менеджеры процессов, такие как supervisor.

Методы класса

create

Статический метод для создания экземпляра класса LongPoll.

#НазваниеТипОписание
1tokenstringТокен вашего Telegram бота, полученный от @BotFather.

Возвращает: LongPoll - экземпляр класса LongPoll.

listen

Запускает основной цикл "длинного опроса". Метод будет бесконечно получать обновления и передавать их в функцию-обработчик.

#НазваниеТипОписание
1handlercallableФункция (замыкание), которая будет вызвана для каждого полученного обновления. В нее передается экземпляр TGZ.

Возвращает: void

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