Работа с постами
Почему пост не опубликовался
У неопубликованного поста примерно шесть причин, и пять из них чинятся за минуту — если знать, какая именно. Ниже разбор по симптомам: что написано у поста в панели, что за этим стоит и что с этим делать.
Опубликовано
Начните с надписи у поста
Когда отправка не удалась, у строки поста остаётся причина словами. Не код ошибки и не «что-то пошло не так»: фраза, из которой понятно, чья это беда и что с ней делать. Мы переводим отказы площадок в такие фразы намеренно: «method is unavailable with group auth» человек читает как «я сломал свой пост», хотя чинить это нам, а «бот не админ канала» он чинит сам за минуту. Незнакомые отказы обобщаются в «разбираемся» — техническая строка при этом не теряется, она уходит в лог и в алерт.
Дальше по таблице: слева то, что вы увидели, справа — что делать. Две ситуации из неё выпадают: ошибкой они не считаются вовсе. Пост, надолго зависший в статусе «отправляется», обычно означает, что процесс отправки прервался на полпути — такая строка возвращается в очередь сама. А пометка про приостановленную публикацию значит, что доступа нет по подписке: пост никуда не делся, он ждёт в очереди и уедет следующим же тиком после оплаты.
| Что написано у поста | Что произошло | Что делать |
|---|---|---|
| бот не админ канала | бота нет в администраторах или у него сняли право публиковать | вернуть боту права администратора и повторить отправку |
| канал не найден | бота выкинули из канала, канал удалили или у него сменился идентификатор | проверить, что бот на месте; если канала больше нет — отключить его у нас |
| ключ доступа больше не работает | доступ отозван, пароль сменён, приложение отвязано | подключить канал заново в разделе «Каналы» |
| сообществу не выдано право на видео | сообщество подключено раньше, чем это право появилось в наборе | войти заново через VK ID — старый ключ правом не дополняется |
| подпись к вложению у телеграма — до 1024 знаков | правится уже опубликованный пост, а текст длиннее подписи к картинке | снять пост в канале и опубликовать заново |
| текст длиннее, чем принимает площадка | превышен предел этой сети | сократить или разложить на несколько постов |
| площадка попросила подождать | флуд-контроль: слишком часто в один канал | ничего, повтор сделаем сами |
| площадка просит подтверждение | капча на стороне площадки | ничего, повтор сделаем сами |
| X не принимает второй такой же пост | ровно этот текст у вас уже выходил | изменить текст и отправить заново |
| X принимает только один тикер через доллар | в тексте два и больше знака доллара перед тикером | оставить один тикер, остальные написать словом |
| связь с X оборвалась на отправке | запрос ушёл, ответ не вернулся — исход неизвестен | посмотреть ленту руками: пост мог уйти |
| публикация приостановлена | нет активной подписки | ничего чинить не нужно, пост ждёт в очереди |
Формулировки — те же, что стоят у поста в панели.
Бот потерял права на канал
Чаще всего дело в правах. Бота добавили в канал, но не в администраторы. Добавили в администраторы, но без права публиковать. Добавили правильно, а потом сменили состав админов и снесли заодно. Площадка в таком случае отвечает отказом, мы показываем «бот не админ канала — добавьте его в администраторы и повторите», и это ровно то, что нужно сделать.
В телеграме зайдите в канал, откройте список администраторов и проверьте, что бот там есть и у него включено «Публикация сообщений». Мы проверяем это в момент подключения канала и не даём подключить бота без прав, но права снимают позже — и узнать об этом можно только в момент отправки. В MAX то же самое: бот должен состоять в канале и иметь права администратора на чтение и написание сообщений; общей формы «id и ключ» у MAX нет, канал подключается через самого бота. Во ВКонтакте прав администратора у ключа не отбирают, зато сообщество можно закрыть или удалить — тогда придёт «канал не найден».
Отдельный случай — «канал не найден» в телеграме. Он приходит и когда бота выгнали, и когда группу повысили до супергруппы: у чата меняется идентификатор, а у нас сохранён старый. Лечится подключением канала заново.
- Подключение телеграм-канала — какие права нужны боту
- Подключение канала MAX
Ключ доступа перестал работать
У ВКонтакте ключ живёт час. Это нормальный режим, а не сбой: мы обновляем его сами перед отправкой, и в обычной жизни вы про это ничего не знаете. Но обновление работает, только пока жива сама выдача доступа. Отозвали приложению доступ в настройках, сменили пароль, вышли из всех устройств — обновлять больше нечем, и канал помечается как требующий повторного входа. Тогда у поста появляется «ключ доступа больше не работает — подключите канал заново», и лечится это входом через VK ID в разделе «Каналы».
Есть и более редкий случай, который выглядит странно: всё подключено, тексты и картинки уходят, а пост с роликом падает. Право на видео появилось в наборе прав ВКонтакте позже права на фотографии, и в уже выданный ключ оно не дописывается — обновление ключа прав не добавляет. Сообщество, подключённое до этого момента, картинки заливает, а видео нет. Мы ловим этот отказ отдельно и говорим прямо: войдите заново через VK ID, и ролик поедет. Повторять такое бессмысленно — новый набор прав выдаёт только новый вход.
- Как подключается сообщество ВКонтакте — вход через VK ID вместо ключа сообщества
Пост площадке не подошёл
Отдельная ловушка — подпись к вложению в телеграме. Обычный пост там 4096 знаков, а подпись к картинке или видео — 1024, вчетверо меньше. При публикации мы это обходим сами: длинный текст уезжает не подписью, а отдельным сообщением ответом на альбом, и пост целиком доходит. А вот у правки уже опубликованного поста обхода нет — телеграм не даёт превратить подпись в сообщение, и мы честно отбиваем правку вместо того, чтобы молча обрезать пост в канале. Отсюда и совет в тексте отказа: снять пост и опубликовать заново. У остальных площадок вложение лимит не режет: во ВКонтакте и в MAX предел один и тот же с вложением и без, у X он в любом случае 280 знаков.
Дальше — отказы по содержанию, и почти все они у X. Дубль он не принимает: ровно тот же текст второй раз не выйдет, надо менять формулировку. Тикер через доллар в посте разрешён один — два и больше площадка отбивает целиком. Бывает и то, что чинится не в тексте: на приложении кончились кредиты или аккаунт заблокирован площадкой. Первое решается пополнением в кабинете разработчика X, второе — разбирательством с самой площадкой, и ни то, ни другое повторной отправкой не лечится.
Проверять длину проще до постановки в очередь, чем после отказа. Композер считает знаки под каждую отмеченную площадку и предупреждает заранее — это тот же самый код проверки, что срабатывает перед отправкой, поэтому расхождений между «в редакторе всё было хорошо» и «площадка отказала» здесь не бывает.
- Счётчик символов — лимиты всех четырёх сетей в одном месте
- Что уходит в X
Что мы повторяем сами, а что ждёт вас
Отказы делятся надвое. Временные — те, где ответ площадки через минуту может измениться: флуд-контроль, капча, мигнувшая сеть, короткий сбой на той стороне. Такое мы повторяем сами: до трёх попыток с нарастающей паузой — минута, пять, пятнадцать. Если площадка прислала точное время ожидания вместе с отказом, мы уважаем его вместо своей паузы: она лучше знает, когда её можно спрашивать снова. Пока попытки не кончились, причина всё равно видна у поста — по ней понятно, что происходит, хотя сдаваться ещё рано.
Терминальные — те, где ответ не изменится ни через минуту, ни через час: бота выгнали, прав нет, текст длиннее лимита, ключ мёртв. Здесь мы не повторяем вовсе, и это осознанно. Долбить площадку запросами, на которые она уже ответила «нет», — способ получить ограничение на бота или аккаунт, а не публикацию; три круга по пятнадцать минут только оттягивают момент, когда вы увидите причину. Правило отбора при этом консервативное: не уверены — повторяем. Лишняя попытка стоит трёх минут, ошибочный отказ стоит неопубликованного поста.
Ровно один случай выпадает из этой логики — обрыв связи с X на отправке. У создания поста в X нет ключа идемпотентности: если запрос ушёл, а ответ не вернулся, мы не знаем, создан пост или нет, и спросить дёшево не можем. Повтор в такой ситуации с равной вероятностью либо опубликует нужное, либо выложит второй такой же пост и спишет за него ещё раз. Мы выбрали не повторять: пост помечается ошибкой с прямой просьбой посмотреть ленту. Дубль в ленте убирать руками неприятнее, чем нажать отправку ещё раз, поэтому компромисс такой.
Как не попадать
Три привычки закрывают почти весь список. Бот администратором — сразу при подключении канала, а не «потом, когда понадобится»: права мы проверяем в момент подключения и без них канал не пускаем, но эта проверка ловит состояние на сегодня, а не решение сменить состав администраторов через месяц. Дальше — счётчик знаков до постановки в очередь, особенно когда к посту приложена картинка и площадок отмечено несколько. И тестовый пост после подключения нового канала, лучше в пустой или технический. Минута сейчас против выяснения в шесть утра, почему утренний пост не вышел.
И отдельно про то, откуда вы узнаете о неудаче. Письма про неушедший пост мы не шлём: причина стоит строкой у самого поста в панели, там же, где остальные его состояния. Если пост важен и ждать до вечера не хочется, есть исходящий вебхук — событие о неудачной публикации уходит на ваш адрес вместе с текстом причины, и завести его можно на что угодно: хоть на сообщение себе в чат, хоть на строку в таблице.
- API сервиса — постановка постов и их статусы из кода
- Отложенный постинг — как устроена очередь и время публикации
Коротко
- Сначала прочитайте фразу у поста: она написана так, чтобы из неё было понятно, что чинить.
- Права и мёртвый ключ — две самые частые причины, и обе лечатся минутой в настройках канала.
- Флуд-контроль и капчу мы повторяем сами до трёх раз; «нет прав» и «текст длиннее» не повторяем вовсе.
- Единственный случай, где надо смотреть ленту руками, — обрыв связи с X: исход отправки нам неизвестен.
Источники
- Telegram Bot API — лимиты сообщения и подписи, права администратора канала
- Документация ВКонтакте — VK ID, права ключа, wall.post
- Документация MAX — ограничения сообщения и права бота в канале
- Документация X — ошибки создания поста, дубли и тикеры
Частые вопросы
Пост в ошибке. Можно просто нажать отправку ещё раз?
Можно — ручная отправка идёт тем же путём, что и очередь. Но сначала уберите причину: если бота так и не вернули в администраторы, вы получите ровно тот же отказ.
Почему пост ушёл в телеграм, но не ушёл во ВКонтакте?
Потому что это разные отправки. Пост в несколько каналов превращается в несколько строк очереди, у каждой свои попытки и свой результат: отказ одной площадки не отменяет публикацию в остальных.
Сколько раз вы пробуете отправить пост?
До трёх раз, с паузой в минуту, пять и пятнадцать минут. Если площадка назвала своё время ожидания, ждём столько. Терминальные отказы не повторяются ни разу — по ним ответ уже понятен.
Пост завис в статусе «отправляется». Что делать?
Подождать. Такое бывает, когда процесс отправки прервался между началом и записью результата — деплой, перезапуск, обрыв. Зависшая строка возвращается в очередь сама в пределах десяти минут.
Придёт ли письмо, если пост не опубликовался?
Нет, письма про это мы не отправляем. Причина видна у поста в панели, а для тех, кто хочет узнавать сразу, есть исходящий вебхук о неудачной публикации.
Читайте также
Smmly — сервис, который держит телеграм, ВКонтакте, MAX и X в одном окне и публикует посты по расписанию. 7 дней за 10 ₽, отмена в один клик. Подключить каналы