О приложении
Пишете бота и не понимаете, что именно прилетает в обновлении? Документация описывает поля, но живой пример всегда нагляднее. APIDebugBot показывает, как Telegram видит конкретное сообщение, в виде аккуратного JSON.
Бот создан для разработчиков и тех, кто только знакомится с Bot API. Его можно держать в личке или добавить в группу, где вы тестируете своего бота.
Два способа получить JSON
Всё держится на двух действиях, и обе работают без настроек.
- Ответ с командой. Ответьте на любое сообщение не от бота командой /debug, и бот пришлёт это сообщение как JSON с отступами.
- Пересылка. Перешлите сообщение прямо боту в личку, и он сразу вернёт структуру в таком же виде.
Команда /help в группах не работает, справку лучше открывать в личном чате с ботом. 🙂
Что видно в ответе
В JSON сразу заметна иерархия: от идентификатора сообщения и данных чата до отправителя, даты и содержимого. Если в сообщении есть форматирование, ссылки или упоминания, они лежат в отдельном массиве сущностей со смещениями и длиной.
Для новичка это быстрый способ понять, чем отличается обычный текст от текста с подписью, как выглядит ответ на чужое сообщение и что меняется у пересланных постов.
- Сущности. Жирный шрифт, ссылки, команды и упоминания приходят с точными позициями в строке.
- Медиа. Фото, документы и стикеры описываются своими полями с идентификаторами файлов.
- Пересылки. Видно, откуда пришло сообщение и в каком виде оно сохранилось.
Зачем это в группе
Бот работает и в группах, поэтому удобно собрать тестовую группу, пригласить своего бота и APIDebugBot и смотреть реальные сообщения рядом с поведением вашего кода. Так проще сравнить, что вы ожидали получить и что пришло на самом деле.
Особенно выручает, когда парсер падает на редком типе сообщения, а воспроизвести его самостоятельно не получается. Достаточно ответить на такое сообщение командой /debug.
Про приватность и кэш
Чтобы отвечать на сообщения, бот кэширует их. По описанию проекта, данные из кэша доступны только тем, кто может ответить на это сообщение и так уже видит его. Кэш чистится регулярно, не реже раза в неделю, а при нехватке места и раньше.
Отсюда два практических вывода. Не ждите, что бот найдёт старое сообщение через месяц. И не добавляйте его в закрытые рабочие чаты с чувствительными данными: лучше выбирать публичные или тестовые группы.
Для кого это полезно
- Начинающие авторы ботов, которые хотят увидеть структуру объектов Bot API на живых примерах.
- Опытные разработчики, которым нужно быстро сверить поля, не поднимая отдельный отладочный код.
- Те, кто пишет документацию или обучает и берёт реальные примеры сообщений для разборов.
Если вам нужно смотреть входящие обновления для вашего собственного бота целиком, понадобится логирование на вашей стороне. APIDebugBot решает более узкую задачу: показать одно сообщение в читаемом виде.
Советы по отладке
Сохраняйте полученный JSON как тестовые данные: из него легко сделать пример для модульного теста вашего обработчика. Следите за тем, чтобы в сохранённом примере не оставались чужие идентификаторы и имена людей.
Сравнивайте JSON из бота с тем, что приходит вашему коду. Если поля расходятся, чаще всего дело в версии библиотеки или в том, что она пропускает неизвестные ей поля.
Частые вопросы
Как получить JSON сообщения через APIDebugBot?▼
Работает ли бот в группах?▼
Безопасно ли добавлять бота в чат?▼
Почему бот не находит старое сообщение?▼
На основе данных