Отладка
Введение
Отладка — это процесс поиска и исправления ошибок в работе вашего бота. В этом разделе вы найдёте:
- Пошаговые алгоритмы для типичных проблем
- Как читать логи и находить ошибки
- Инструменты для тестирования
- Частые ошибки и их решения
💡 Совет: Если бот работает не так, как ожидалось, начните с логов — они показывают всё, что происходит.
Быстрый чек-лист для любой проблемы
- Включён ли бот? (/adm → Настройки → Бот)
- Настроен ли технический чат?
- Есть ли событие в логах (фильтр «Update»)?
- Есть ли ошибка в логах (фильтр «Error»)?
- Правильно ли настроен обработчик?
- Правильно ли указаны переменные (${...})?
- Не истекло ли время жизни переменной?
- Достаточно ли прав у бота (для групп/каналов)?
Бот не отвечает: чек-лист
Если бот игнорирует сообщения пользователя, выполните последовательно следующие шаги.
Шаг 1: Проверьте статус бота
/adm → Настройки → Бот
| Состояние | Что означает | Действие |
|---|---|---|
| ☑️ (включён) | Бот работает | Идти к шагу 2 |
| ⬜️ (выключен) | Бот остановлен | Включите бота |
Шаг 2: Проверьте технический чат
/adm → Настройки → Технический чат
Технический чат должен быть выбран. Если он не выбран — выберите любой чат (можно создать отдельную группу и добавить туда бота).
Совет:
Шаг 3: Проверьте логи
/adm → Настройки → Логи
Включите фильтры «Update» и «Error».
| Что вы видите | Что означает | Действие |
|---|---|---|
| Нет событий | Бот не получает обновления от Telegram | Проверьте подключение бота (шаг 4) |
| Есть события, но нет реакции | Обработчик не сработал | Проверьте настройки обработчика (шаг 5) |
| Есть ошибки (красные записи) | Произошла ошибка | См. раздел «Чтение логов» ниже |
Шаг 4: Проверьте подключение бота
Отправьте боту команду /start и посмотрите на ответ.
| Что происходит | Проблема | Решение |
|---|---|---|
| Бот не отвечает вообще | Токен неверный или бот не запущен | Перепроверьте токен в настройках, перезапустите бота |
| Бот отвечает инструкцией | Обработчик имеет настройку "по умолчанию" | Перенастройте обработчик под свои задачи |
| Бот отвечает, но не так, как нужно | Логика обработчика неверна | Проверьте реакции в обработчике |
Шаг 5: Проверьте обработчик
/adm → Обработчики → [ваш обработчик]
| Проверьте | Что должно быть |
|---|---|
| Условие | Текст команды (например, /start) или регулярное выражение |
| Область действия | «Задействовать в привате» — включено (для личных чатов) |
| Реакции | Хотя бы одна реакция (например, SendMessage) |
Чтение логов
Как открыть логи
- Перейдите в /adm → Настройки → Логи
- Пройдите авторизацию (один раз в браузере/клиенте)
- Откроется страница с событиями бота
Фильтры логов
| Фильтр | Что показывает | Когда использовать |
|---|---|---|
| Update | Входящие события от Telegram | Проверить, что пришло от пользователя |
| Request | Запросы бота к Telegram API | Проверить, что бот отправляет |
| Response | Ответы Telegram API | Проверить, успешен ли запрос |
| Error | Ошибки | Найти причину проблемы |
| Context | Отформатированные данные (реакция Log) | Детальная отладка |
Типичные ошибки и их решение
Ошибки отправки сообщений
| Ошибка в логах | Причина | Решение |
|---|---|---|
chat_id is empty |
Не указан получатель | Добавьте chat_id: ${user.id} или ${chat.id} |
message text is empty |
Нет текста сообщения | Заполните поле «Текст» в SendMessage |
message is too long |
Текст > 4096 символов | Используйте string.truncate или разбейте на несколько сообщений |
can't parse entities |
Неверный HTML/Markdown | Проверьте синтаксис форматирования |
bot was blocked by the user |
Пользователь заблокировал бота | Игнорируйте (или удалите из списков) |
Ошибки обработчиков
| Симптом | Причина | Решение |
|---|---|---|
| Обработчик не срабатывает | Не включена область действия | Включите «Задействовать в привате» |
| Обработчик срабатывает на чужие сообщения | Условие слишком общее | Сделайте условие более конкретным |
| Обработчик срабатывает не в том порядке | Неправильный приоритет | Увеличьте приоритет нужному обработчику |
Ошибки переменных
| Симптом | Причина | Решение |
|---|---|---|
${var.person.name} пусто |
Переменная не загружена | Вызовите GetVarCloud перед использованием |
variable not found |
Неправильное имя переменной | Проверьте название (регистр важен) |
| Значение не сохраняется | Не вызван SetVarCloud | Добавьте реакцию сохранения |
Ошибки HTTP-запросов (SendRequest)
| Код ошибки | Причина | Решение |
|---|---|---|
| 400 Bad Request | Неверный JSON в теле запроса | Проверьте синтаксис JSON |
| 401 Unauthorized | Неверный токен | Проверьте заголовок Authorization |
| 404 Not Found | Неверный URL | Проверьте адрес API |
| 429 Too Many Requests | Слишком много запросов | Добавьте задержку (Wait) |
| timeout | API не ответил за 30 секунд | Увеличьте таймаут или используйте отложенные действия |
Ошибки вебхуков
| Симптом | Причина | Решение |
|---|---|---|
| Вебхук не приходит | Неверный URL | Скопируйте URL заново из интерфейса EnotPro |
| Ошибка 404 | Неправильный путь | Проверьте, что вебхук включён |
| Ошибка 405 | Неверный HTTP-метод | Разрешите метод POST в настройках вебхука |
| Вебхук приходит, но не обрабатывается | Таймаут > 30 секунд | Вынесите длительные операции в FINISH |
Отладка форм
Валидация не срабатывает
| Проблема | Причина | Решение |
|---|---|---|
| Поле принимает любые символы | Не указано регулярное выражение | Добавьте regex в настройки поля |
| Не показывается ошибка | Триггер «Ошибка поля» не настроен | Добавьте SendMessage в триггер ошибки |
| Пользователь проходит поле с ошибкой | Стандартная валидация отключена | Включите проверку в настройках поля |