Telegram-бот не публикует пост: что проверить
Если бот не публикует сообщение в Telegram-канал, причина обычно находится в одном из нескольких мест: права бота, неправильный канал, формат данных или ответ Telegram API.
Проверять их лучше по порядку, а не менять сразу всё.
1. Бот действительно добавлен в нужный канал
Первое, что стоит проверить, — сам канал.
В проектах с несколькими тестовыми и рабочими каналами легко добавить бота в один, а публиковать попытаться в другой.
Откройте список администраторов именно нужного канала и найдите там нужного бота по username.
Если его нет, дальнейшая настройка программы ничего не исправит.
2. У бота есть право публиковать сообщения
Само присутствие бота в канале недостаточно.
Для публикации он должен иметь соответствующие административные права.
Проверьте настройки администратора канала.
Конкретно нужно право «Публикация сообщений» — один из пунктов при настройке конкретного администратора канала. Обычное членство в канале, даже с полным доступом к чтению, этого права не даёт: это отдельная настройка, которую нужно включить осознанно.
Выдать это право может только владелец канала или администратор, у которого есть право назначать других администраторов, — рядовой подписчик так не сможет, даже если у него открыт канал.
Частая ошибка — бота добавили в канал как обычного участника (например, через инвайт-ссылку или просто как подписчика), а не через раздел «Администраторы». В этом случае права на публикацию просто не существует, пока роль бота не изменена явно.
Боту-публикатору не обязательно выдавать все права администратора — достаточно права на публикацию сообщений. Остальные права (например, удаление сообщений участников или блокировка пользователей) на факт публикации не влияют.
Если Telegram не разрешает этому боту публиковать сообщения, внешний инструмент также не сможет обойти это ограничение.
Это одна из самых частых причин ситуации, когда токен правильный, канал существует, но отправка завершается ошибкой.
3. Указан правильный идентификатор канала
Telegram-канал можно идентифицировать несколькими способами в зависимости от его типа.
У публичного канала обычно есть @username.
У приватного канала может использоваться числовой идентификатор вида -100....
Некоторые инструменты также позволяют получить идентификатор из пересланного сообщения.
Главное — не путать идентификатор канала с пригласительной ссылкой.
Ссылки вида t.me/+... или старого формата joinchat предназначены для присоединения пользователей и не являются идентификаторами цели для публикации через Bot API.
Если программа просит target channel, передавать туда invite link вместо поддерживаемого идентификатора не нужно. Если формат ID канала (особенно для приватных каналов) непонятен — отдельно разобрано, как его получить.
4. Бот и токен соответствуют друг другу
Если используется несколько Telegram-ботов, легко выбрать не тот токен.
Токен определяет конкретного бота.
Если права администратора выданы Bot A, а программа публикует от имени Bot B, права первого здесь не помогут.
Полезная проверка:
- какой bot username соответствует токену;
- какой бот добавлен в канал;
- какой бот выбран для публикации.
Все три значения должны относиться к одному и тому же боту.
5. Проверьте содержимое публикации
Иногда соединение с Telegram и права настроены правильно, а ошибка появляется только с конкретным постом.
Тогда стоит упростить тест.
Сначала отправьте короткое текстовое сообщение без медиа и кнопок.
Если оно прошло, постепенно добавляйте:
- текст;
- изображение или видео;
- кнопки.
Так можно определить, на каком элементе появляется ошибка.
Причиной может быть некорректный файл, неподдерживаемый формат или неправильные данные кнопки.
Не нужно каждый раз заново менять токен и права, если простой текст уже успешно публикуется.
6. Проверьте URL кнопки
Если публикация содержит URL-кнопку, адрес должен быть корректным.
Для веб-страницы используйте полный URL с протоколом.
Если кнопка ведёт в Telegram, проверьте саму ссылку отдельно в клиенте Telegram.
Ошибка внутри ссылки и ошибка отправки поста — это разные проблемы, поэтому их лучше диагностировать отдельно.
7. Не повторяйте запрос бесконечно после ограничения Telegram
Telegram Bot API применяет ограничения частоты запросов.
Если приложение отправляет слишком много сообщений за короткий период, API может вернуть ошибку 429 Too Many Requests.
При такой ошибке правильное поведение — подождать указанный Telegram интервал и повторить операцию позже.
Бесконечное быстрое повторение запроса только продолжает проблему.
Если единичный тестовый пост публикуется, а большая серия периодически останавливается, нужно смотреть именно ответы API и обработку RetryAfter.
8. Посмотрите фактическую ошибку Telegram
Сообщение «не опубликовано» само по себе даёт мало информации.
Если инструмент показывает ошибку Telegram, сохраните её текст.
Разные ответы указывают на разные классы проблем:
- нет доступа к чату;
- неверный идентификатор;
- недостаточно прав;
- неверные данные сообщения;
- ограничение частоты;
- другая ошибка Bot API.
Поэтому хороший инструмент публикации должен не просто сказать «не получилось», а дать возможность понять, какая отправка завершилась ошибкой.
9. Не используйте invite link как способ дать боту доступ
Пригласительная ссылка предназначена для пользователя.
Бот не становится администратором канала потому, что программе передали ссылку t.me/+....
Его нужно явно добавить в канал и выдать ему необходимые права.
Это разные действия:
- ссылка приглашает;
- права администратора разрешают публикацию.
Сделать бота администратором можно только вручную, из самого Telegram: откройте канал → «Администраторы» → «Добавить администратора» → найдите бота по username → включите ему право «Публикация сообщений» (и любые другие права по необходимости). Ссылка-приглашение в этой цепочке не участвует ни на одном шаге.
Быстрая проверка за две минуты
Если пост не выходит, пройдите короткий список:
- Нужный ли бот выбран?
- Есть ли этот бот в администраторах нужного канала?
- Разрешена ли ему публикация?
- Правильный ли target указан?
- Это идентификатор канала, а не invite link?
- Отправляется ли простой текст без медиа и кнопок?
- Что именно ответил Telegram API?
Если простой текст проходит, проблема почти наверняка уже не в базовом доступе к каналу.
Дальше добавляйте элементы поста по одному.
Как это выглядит в SoftLitePOSTBot
SoftLitePOSTBot публикует через ваши собственные Telegram-боты в каналы, где у них есть необходимые права.
Для цели публикации поддерживаются публичные username/ссылки, приватные идентификаторы -100... и определение ID через пересланное сообщение. Invite links вида t.me/+... и joinchat не используются как publication target.
Публикации отправляются последовательно. При ответе Telegram RetryAfter программа учитывает необходимость ожидания, а после работы показывает результат успешных и неуспешных отправок.
Это не устраняет ограничения Telegram, но делает диагностику понятнее: можно увидеть, что именно не было отправлено, вместо того чтобы гадать, потерялся ли пост.