Polling
Polling — это режим, при котором ваш сервер периодически запрашивает обновления у Telegram. Подходит для разработки и тестирования.
Преимущества
Section titled “Преимущества”- ✅ Не требует публичного URL
- ✅ Простая настройка
- ✅ Подходит для разработки
- ✅ Можно использовать локально
Недостатки
Section titled “Недостатки”- ❌ Задержка получения обновлений
- ❌ Неэффективное использование ресурсов
- ❌ Не рекомендуется для production с высокой нагрузкой
Настройка
Section titled “Настройка”1. Конфигурация в config/hybridgram.php
Section titled “1. Конфигурация в config/hybridgram.php”'bots' => [ [ 'token' => env('BOT_TOKEN'), 'bot_id' => 'main', 'update_mode' => UpdateModeEnum::POLLING, 'routes_file' => base_path('routes/telegram.php'), 'polling_limit' => env('TELEGRAM_POLLING_LIMIT', 100), 'polling_timeout' => env('TELEGRAM_POLLING_TIMEOUT', 0), 'allowed_updates' => explode(',', env('ALLOWED_TELEGRAM_UPDATES', '')), ],],2. Переменные окружения
Section titled “2. Переменные окружения”BOT_TOKEN=ваш_токенBOT_ID=mainTELEGRAM_UPDATE_MODE=POLLINGTELEGRAM_POLLING_LIMIT=100TELEGRAM_POLLING_TIMEOUT=0ALLOWED_TELEGRAM_UPDATES=message,callback_query3. Запуск polling
Section titled “3. Запуск polling”Базовый запуск
Section titled “Базовый запуск”php artisan hybridgram:polling mainС hot-reload (для разработки)
Section titled “С hot-reload (для разработки)”php artisan hybridgram:polling main --hot-reloadHot-reload автоматически перезапускает команду при изменении кода.
С настройками watch
Section titled “С настройками watch”php artisan hybridgram:polling main \ --hot-reload \ --watch=app,routes,config,src \ --watch-interval=1Параметры:
--watch— директории для отслеживания (через запятую)--watch-interval— интервал проверки в секундах
Ограничение типов обновлений
Section titled “Ограничение типов обновлений”php artisan hybridgram:polling main --allowed-updates=message,callback_queryИли в конфиге:
'allowed_updates' => ['message', 'callback_query'],Параметры Polling
Section titled “Параметры Polling”polling_limit
Section titled “polling_limit”Максимальное количество обновлений за один запрос (1-100):
'polling_limit' => 100, // МаксимумБольше обновлений = меньше запросов, но больше задержка.
polling_timeout
Section titled “polling_timeout”Таймаут запроса в секундах (0 = короткий polling):
'polling_timeout' => 0, // Короткий pollingДля длинного polling (long polling):
'polling_timeout' => 60, // Длинный polling (до 60 секунд)Длинный polling уменьшает количество запросов, но увеличивает задержку ответа на команды.
Hot-reload в разработке
Section titled “Hot-reload в разработке”Hot-reload автоматически перезапускает команду при изменении файлов:
php artisan hybridgram:polling main --hot-reload --watch=app,routesЭто позволяет:
- Не перезапускать команду вручную
- Быстро видеть изменения в коде
- Удобно разрабатывать локально
Запуск через Supervisor (production)
Section titled “Запуск через Supervisor (production)”Для постоянной работы в production:
[program:telegram-polling]command=php /path/to/artisan hybridgram:polling maindirectory=/path/to/projectautostart=trueautorestart=truestopasgroup=truekillasgroup=trueuser=www-dataredirect_stderr=truestdout_logfile=/path/to/storage/logs/polling.logОграничения
Section titled “Ограничения”allowed_updates
Section titled “allowed_updates”Ограничьте типы обновлений для уменьшения нагрузки:
'allowed_updates' => [ 'message', 'callback_query', // Только нужные типы],Один процесс на бота
Section titled “Один процесс на бота”Не запускайте несколько процессов polling для одного бота одновременно — это может привести к дублированию обновлений.
Отладка
Section titled “Отладка”Логирование
Section titled “Логирование”Команда выводит информацию о получаемых обновлениях:
Processing update 12345...Processing update 12346...Проверка статуса
Section titled “Проверка статуса”Проверьте, что polling работает:
ps aux | grep "hybridgram:polling"Переход с Polling на Webhook
Section titled “Переход с Polling на Webhook”Когда будете готовы к production:
-
Настройте вебхук:
Terminal window php artisan hybridgram:set-webhook main -
Остановите polling:
Terminal window # Найти и остановить процессpkill -f "hybridgram:polling" -
Удалите вебхук (если нужно вернуться к polling):
Terminal window php artisan hybridgram:delete-webhook main
Рекомендации
Section titled “Рекомендации”Для разработки
Section titled “Для разработки”- ✅ Используйте hot-reload
- ✅ Ограничьте
allowed_updatesтолько нужными типами - ✅ Используйте
polling_limit = 10-20для быстрой реакции
Для production
Section titled “Для production”- ❌ Не рекомендуется использовать polling в production
- ✅ Используйте webhook вместо polling
- ✅ Если необходимо, используйте длинный polling с таймаутом
Когда использовать Polling
Section titled “Когда использовать Polling”Используйте polling когда:
- Разрабатываете бота локально
- Тестируете функциональность
- Нет возможности настроить HTTPS
- Низкая нагрузка и нет критичных задержек
Не используйте polling когда:
- Production окружение
- Высокая нагрузка
- Критичны задержки получения обновлений
- Нужна максимальная производительность
Что дальше?
Section titled “Что дальше?”- Webhook — рекомендуемый режим для production
- Отправка сообщений — работа с TelegramBotApi