БлогУслугиКарьера
Обсудить проект
БлогУслугиКарьераОбсудить проект
Telegram

Telegram-бот не отправляет длинный текст: что проверить

Почему Telegram-бот не отправляет сообщение или подпись к фото. Проверяем длину текста, подстановки и разметку, затем выбираем способ отправки.

Редакция Feature IT
Редакция Feature IT·
1 окт
·
6 мин
·
Робот проверяет длинное сообщение рядом со смартфоном и двумя короткими сообщениями

Короткое уведомление бот отправляет, а подробный заказ или пост с фотографией не проходит. Первое подозрение обычно падает на длину. Но одинаковый текст может попасть в разные поля, измениться после подстановки данных или содержать ошибку форматирования.

Начните с ответа Bot API, интерфейса, через который программа обращается к Telegram. Сравните его с текстом, который бот пытался отправить. Для предварительной проверки вставьте готовый текст в счётчик символов Feature IT.

Сначала прочитайте причину отказа

Посмотрите код ошибки и поле description в ответе API. Если используете библиотеку, эти сведения обычно находятся в исключении или журнале отправки. Не ограничивайтесь общей записью «сообщение не отправлено».

Что видно при проверке С чего начать
API сообщает о слишком длинном сообщении Проверить итоговый text после подстановок
Обычный текст уходит, а с фото возникает отказ Проверить поле caption
Длина небольшая, но ошибка связана с разбором сущностей Проверить HTML, Markdown и экранирование
Ошибка относится к данным кнопки Проверить callback_data, отдельно от сообщения
Даже короткое сообщение не отправляется Проверить адресата, права и остальные детали ответа API

В документации Telegram Bot API описаны поля ответа при неудачном запросе. Точная формулировка ошибки может зависеть от ситуации и библиотеки. Для диагностики сохраняйте метод отправки и описание ошибки, но не записывайте в общедоступный лог токен бота и содержимое клиентских заявок.

Проверьте, в какое поле попал текст

У отдельного сообщения и подписи к фотографии разные ограничения. Метод sendMessage принимает в text от 1 до 4096 символов после разбора форматирования. Для подписи caption в sendPhoto указан диапазон от 0 до 1024. Эти значения относятся к отправке через Bot API. Проверить их можно в разделах sendMessage и sendPhoto.

Представьте обычный текст на 1500 русских букв, пробелов и знаков препинания. По длине он проходит как отдельное сообщение, но не помещается в подпись к фото. Удаление пары слов здесь не поможет: нужно заметно сократить подпись или изменить способ подачи.

Оставьте под изображением короткое описание, а подробности отправьте следующим сообщением. Если это инструкция, каталог или условия услуги, можно разместить полный материал на сайте и дать ссылку. Выбор зависит от задачи: читателю должно быть понятно, где продолжение и к чему оно относится.

В счётчике Feature IT режим Telegram показывает ориентир для сообщения. При проверке подписи сравнивайте результат с ограничением поля caption вручную. Этот режим не описывает все поля API.

Считайте готовый текст после подстановок

Шаблон и отправленное сообщение часто имеют разную длину. В шаблоне стоят короткие переменные: имя, состав заказа, адрес, комментарий. В реальном уведомлении вместо них появляются строки из базы.

Например, шаблон подтверждения включает список товаров. На тестовом заказе с одной позицией всё работает. В заказе с десятками позиций список разрастается, и сообщение перестаёт проходить проверку. Уменьшать лимит имени клиента в такой ситуации бессмысленно: основной объём создаёт другой блок.

Проверяйте так:

  1. Соберите сообщение тем же способом, которым оно формируется перед отправкой.
  2. Подставьте длинные реалистичные значения и заказ с большим числом позиций.
  3. Добавьте итоговую ссылку, служебную подпись и промокод, если они используются.
  4. Вставьте результат в счётчик количества символов.
  5. Повторите проверку для короткого заказа и для полей, которые могут оказаться пустыми.

Для ручной редакторской проверки используйте обезличенные примеры. Если тестовый вариант уже подходит к границе, сократите повторяющиеся детали. При автоматической отправке проверяйте каждое сформированное сообщение: одна удачная проверка шаблона не ограничивает длину будущих данных.

Посчитайте символы перед отправкой

Вставьте готовое сообщение с подставленными значениями в счётчик Feature IT.

Проверить длину текста

Отделите длину от ошибки разметки

Когда отказ связан с разбором форматирования, сокращение текста может случайно убрать проблемное место, но не устранит причину. Типичный пример: клиент ввёл знак, который имеет специальное значение в выбранном режиме, а программа вставила его в сообщение без экранирования.

Для диагностики отправьте безопасный тестовый текст без parse_mode. Если он проходит, проверьте форматирование исходного сообщения: закрытие тегов, корректность ссылок и обработку пользовательских значений. Правила HTML и MarkdownV2 различаются.

При подсчёте также важно, что именно вы вставили в инструмент. Строка <b>Заказ принят</b> содержит теги. После обработки форматирования читатель видит «Заказ принят». Если вы убрали parse_mode, теги станут обычной частью текста. Сравнивать длину этих вариантов как одну величину нельзя.

Счётчик Feature IT использует JavaScript String.length, то есть считает кодовые единицы UTF-16. Например, обычная русская буква занимает одну такую единицу, а эмодзи может занимать несколько. Он не разбирает Telegram-разметку и не выполняет запрос к Bot API. Для обычного текста это удобная предварительная проверка; результат отправки всё равно нужно проверить через тот же метод и режим, что используются в рабочем боте. Особенности эмодзи и переносов разобраны отдельно в статье почему счётчики показывают разные числа.

Проверьте ссылку, которую добавляет бот

В финальной версии URL иногда оказывается заметно длиннее чернового адреса. После добавления источника, кампании и названия публикации он занимает несколько строк. Если ссылка вставлена открытым текстом, её длина добавляется к сообщению.

Можно оформить короткую подпись со ссылкой средствами выбранного режима или вынести переход в URL-кнопку. В обоих случаях проверьте итоговое оформление. Скрытая ссылка требует корректной разметки, а кнопка передаётся отдельно от тела сообщения.

Не смешивайте URL-кнопку и callback_data. В первом случае читатель открывает адрес, во втором бот получает короткие данные действия. Для callback_data документация задаёт ограничение от 1 до 64 байт. Его нельзя переносить на видимую подпись кнопки. Описание полей есть в InlineKeyboardButton.

Если сообщение ведёт на сайт и важно различать источники заявок, подготовьте конечный адрес заранее. В статье об UTM-метках для Telegram есть пример разметки. Проверять длину лучше после добавления всех параметров.

Как разделить сообщение без сломанных ссылок

Для длинного заказа удобно отделить краткое подтверждение от подробного состава. В первом сообщении оставьте номер, статус и следующее действие. Затем отправьте позиции заказа смысловыми блоками. В инструкции такими блоками могут стать отдельные шаги.

Не режьте исходный HTML или Markdown на куски фиксированной длины. Граница может пройти внутри тега, адреса или конструкции форматирования. Для текста с эмодзи дополнительную сложность создают составные символы. Безопаснее сначала разбить содержание на целые абзацы или записи, а затем отдельно оформить каждый фрагмент.

Заранее предусмотрите слишком длинный единичный блок: например, пользовательский комментарий. Его можно вынести в отдельный документ или на защищённую страницу заказа. Молча отбрасывать остаток нельзя, особенно если там адрес доставки или уточнение клиента.

После разделения проверьте порядок отправки и поведение при частичном сбое. Если первый фрагмент ушёл, а второй не прошёл, повтор всей цепочки создаст дубли. Записывайте, какие фрагменты уже отправлены, чтобы повторить только недоставленную часть.

Проверка перед запуском

Отправьте себе те же варианты, которые возможны в работе: длинный заказ, пустой комментарий, имя с символами форматирования, текст с эмодзи, ссылку с параметрами и публикацию с фотографией. Для каждого варианта проверьте ответ API и вид сообщения в Telegram.

Обсудим ваш проект?

Оставьте контакты — перезвоним и обсудим задачу

Содержание
  • Сначала прочитайте причину отказа
  • Проверьте, в какое поле попал текст
  • Считайте готовый текст после подстановок
  • Отделите длину от ошибки разметки
  • Проверьте ссылку, которую добавляет бот
  • Как разделить сообщение без сломанных ссылок
  • Проверка перед запуском
Поделиться:

Похожие статьи

UTM-метки для Telegram: как отследить переходы и заявки
Telegram

UTM-метки для Telegram: как отследить переходы и заявки

7 мин
Сколько символов в сообщении и посте Telegram: все лимиты 2026
Telegram

Сколько символов в сообщении и посте Telegram: все лимиты 2026

9 мин
Сколько стоит Telegram-бот в 2026: смета без скрытых доплат
Telegram

Сколько стоит Telegram-бот в 2026: смета без скрытых доплат

12 мин
Feature IT

Feature IT — платформа по обучению программированию и разработке цифровых продуктов. Мы создаём современные веб-решения для бизнеса и обучаем этому других!

Политика конфиденциальностиПользовательское соглашение

О компании

  • Блог
  • Карьера

Услуги разработки

  • Разработка сайтов под ключ
  • Веб-приложения на React/Next.js
  • Telegram-боты для бизнеса
  • Mini Apps (Telegram, VK)
  • SEO-оптимизированные сайты
  • Автоматизация бизнес-процессов
  • Поддержка и развитие IT-продуктов

Обучение

  • Курс Python с нуля
  • Алгоритмы и структуры данных
  • Паттерны проектирования
  • Подготовка к собеседованиям в IT
  • Практика на реальных проектах

Инструменты

  • Генератор UTM-меток
  • Счётчик символов