#Что означает ошибка
Не удаётся отправить сообщение в канал
В Telegram-канале публикация недоступна, если у вас нет прав администратора на публикацию, канал в режиме, где писать могут только админы, аккаунт ограничен или публикуемое содержимое нарушает правила (ссылки, медиа).
Проверьте свою роль и права, затем ограничения аккаунта.
Для ботов отдельная проверка прав.
Публикация в канале требует прав администратора. Для бота нужно добавить его администратором с правом публикации сообщений.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Нет прав администратора | Роль. | Выдайте право. |
| Бот не добавлен | Администратор. | Добавьте. |
| Неверный ID канала | Формат. | Проверьте. |
| Ограничения аккаунта | Спам. | Подождите. |
#Пошаговое решение
- Проверьте свои права администратораЕсли публикация идёт от вашего аккаунта, откройте канал → название канала → «Управление»/«Редактировать» → «Администраторы» и проверьте наличие права «Публикация сообщений». Для бота владелец канала должен добавить его в «Администраторы» с правом публикации. При отправке через Bot API проверьте адрес
chat_id: используйте действительный@usernameпубличного канала либо числовой идентификатор, а не название канала с пробелами. Прочитайте JSON-ответ API:403означает недостаток прав,400— ошибку данных,429— ограничение частоты; приretry_afterподождите указанное число секунд. Делите длинный текст на сообщения в пределах ограничений метода, не повторяйте запросы в цикле. - Для бота: добавьте администраторомЕсли посты отправляет бот, администратор канала должен открыть канал → его название → «Изменить»/«Управление каналом» → «Администраторы» → «Добавить администратора». Выберите нужного бота и разрешите «Публикация сообщений», затем сохраните. Бот не должен получать дополнительные права без необходимости. После этого отправьте короткое тестовое сообщение и проверьте, появилось ли оно в канале.
- Проверьте chat_idДля отправки через Telegram Bot API укажите
chat_idточно:@usernameсобственного публичного канала либо числовой идентификатор доступного боту чата/канала. Узнать его можно из разрешённых обновлений/официальных методов API, не из случайной «таблицы ID». При400 Bad Request: chat not foundперепроверьте значение и права бота; не путайте название канала со служебным идентификатором. - Проверьте длину текста и частотуДля метода
sendMessageпроверьте, что текст сообщения укладывается в ограничение Telegram (обычно до 4096 символов после разбора разметки). При ошибке API429 Too Many Requestsпрочитайте полеretry_afterв ответе и выждите указанное число секунд, не отправляя запросы в цикле. Если403 Forbidden, сначала проверьте права администратора. Для диагностики отправьте короткий текст без разметки. - Проверьте аккаунт через @SpamBotВ Telegram откройте поиск, введите
@SpamBotи убедитесь, что открылся официальный бот проверки ограничений, затем нажмите «Начать»/Start. Прочитайте ответ: если указан срок, прекратите непрошенные сообщения незнакомым людям до его окончания. Если бот предлагает обжалование и вы уверены в ошибке, используйте встроенную кнопку и кратко опишите обстоятельства без паролей или кодов. Если бот пишет, что ограничений нет, проверьте, разрешает ли конкретный собеседник получать сообщения; массовые рассылки в личку не используйте.
#Права
Откройте канал → «Управление каналом» → «Администраторы», найдите свою учётную запись и включите «Публикация сообщений». Если вы не администратор, писать в канале нельзя по определению: комментарии возможны только через привязанную группу обсуждения. Проверьте, что канал не заархивирован и вы не вышли из него.
#Бот и автопостинг
Добавьте бота администратором канала с правом «Публикация сообщений». Проверьте токен и chat_id канала (для публичного — @username, для приватного — отрицательное число). Тест: curl "https://api.telegram.org/bot<TOKEN>/getChat?chat_id=@channel", затем sendMessage. Ошибка Forbidden: bot is not a member of the channel chat значит, что бот не добавлен. Bad Request: chat not found — неверный идентификатор.
#Ограничения и размер
Лимит текста сообщения — 4096 символов, подписи к медиа — 1024. Слишком частые публикации приводят к ошибке 429 Too Many Requests — ждите указанное в retry_after время. Проверьте аккаунт через @SpamBot. Если канал заблокирован за нарушения, об этом сообщит Telegram при попытке публикации.
curl "https://api.telegram.org/bot<TOKEN>/getChat?chat_id=@channel"curl -X POST "https://api.telegram.org/bot<TOKEN>/sendMessage" -d chat_id=@channel -d text=Test