Логи
Логи — это окно во внутреннюю работу вашего бота. Здесь отображаются все данные, которые бот получает от Telegram и отправляет обратно, в исходном, необработанном виде.
Логи незаменимы при отладке: вы видите, какие данные пришли от пользователя, какие запросы отправил бот, какие ошибки возникли и что именно пошло не так.
Первый вход: авторизация
Важно: прежде чем открыть страницу с логами, необходимо один раз пройти авторизацию в том браузере, который вы планируете использовать.
Как это сделать:
- Откройте бота
- Перейдите в раздел /adm → Настройки → Логи
- Пройдите авторизацию (обычно это подтверждение через Telegram)
После этого страница логов станет доступна в вашем браузере.
Основа работы с логами
Разберем что предлагают логи и в чем полезны.
Логи платформы предлагает следующий интерфейс и функции.
Фильтры
Фильтры помогают скрыть ненужные типы событий и сосредоточиться на важном. Доступны следующие типы:
| Тип | Описание |
|---|---|
| Error | ошибки приходящие от Телеграма в ответ на запрос различных методов, а так же ошибки самой платформы, при попытке выполнить невозможное действие. |
| Context | объекты формируемые реакцией Log. Содержат в себе подробные данные о выполняемом действии в моменте. |
| Update | не обработанные данные получаемые от Телеграм в оригинальном виде |
| Request | запросы отправляемые вашим ботом к серверам Телеграм. |
| Response | ответы Телеграма на ваши запросы. В них содержится результат выполнения запросов. |
Совет
при отладке включайте только нужные фильтры. Например, для проверки ошибок — только
Error. Для анализа того, что приходит от пользователя —Update.
Функции
- JSON дерево: читаем нечитаемое
Telegram присылает данные в формате JSON — это компактная текстовая строка. Но человеку читать такую строку очень сложно.
Пример JSON объекта
Функция «JSON-дерево» превращает эту строку в структурированный, читаемый вид:
Пример JSON дерева
Как видно, JSON объект превращается в структурированное, понятное и легко читаемое дерево.
Из этих объектов можно получить любую доступную информацию. Информация будет доступна в переменных начинающихся с update:
| Переменная | Описание |
|---|---|
${update.message.chat.id} |
ID чата где произошло событие |
${update.messagefrom.id} |
ID инициатора события |
${update.message.text} |
текст отправленного сообщения |
Важно
Синтаксис переменной — строго ${...}. Не пропускайте знак доллара и фигурные скобки.
- Развернуть все списки/объекты
Функция напрямую связана с предыдущей "JSON дерево"
По умолчанию, после включения функции "JSON дерево", все приходящие и формируемые апдейты будут появляться в максимально свернутом виде.
Однако, после включения функции "развернуть все списки/объекты", логи по умолчанию будут разворачивать все апдейты.
События
В логах отображаются три базовых типа объектов, которые составляют основу общения между Telegram и ботом.
| Объект | Описание |
|---|---|
| update | событие которое произошло в Телеграме, которое прислал Телеграм |
| request | запрос отправляемый ботом для выполнения заданных вами методов Telegram bot.api |
| response | ответ Telegram bot.api на ваш запрос, в котором будет указан результат запроса: выполнено, или отклонено |
update
update - это JSON-объект с необработанной информацией о событии, которое Telegram отправил боту. Это "сырец", который приходит от Telegram до любой обработки.
request
request - это JSON-объект, который сформировал бот. Он содержит информацию о том, какой метод Telegram API нужно вызвать и с какими параметрами.
response
response - это JSON-объект, который Telegram вернул в ответ на запрос бота. В нем указано:
- ok: true — запрос выполнен успешно, результат в поле result
- ok: false — запрос отклонен, в description — текст ошибки
Контекст
Для получения более подробных и отформатированных данных необходимо воспользоваться реакцией Log
Реакция Log преобразует данные в более сформированный и читаемый вид.
После вызова реакции Log, в логах можно будет увидеть следующую картину:
Как видно, формат отображаемых данных сильно изменился и расширился.
Теперь, мы видим гораздо больше информации и информация разделена более удобно.
Разберем более детально.
Объекты доступные в контексте делятся на постоянные и опциональные (появляются после выполнения определенных условий)
Постоянные
Постоянные объекты доступны всегда, независимо от обстоятельств
| Объект | Описание |
|---|---|
| bot | информация о боте |
| chat | информация о чате где произошло событие |
| target | информация о событии |
| from | информация об инициаторе событии |
| trigger | информация о выполняемом триггере |
| var | информация о созданных реакциями переменных |
${bot...}
Пример объекта ${bot}
${chat...}
Пример объекта ${chat}
${from...}
Пример объекта ${from}
Опциональные
_Опциональные объекты доступны при выполнении условий (определенные реакции, сущности)
| Объект | Описание |
|---|---|
| update | Информация в оригинальном виде о событии в Телеграме |
| handler | Информация о сработавшем обработчике |
| task | Информация о сработавшем отложенном действии |
| form | Информация о прогрессе выполнения формы |