27 сентября 2026 я выложил MAX Autopost 1.11.9. Это не правка кнопки «Читать» и не история про сертификат Минцифры. После публикации в группу или канал MAX приходил только текст. Картинки не было. Кнопки тоже не было.
Плагин: MAX Autopost (Free). Предыдущий разбор: 1.11.8 и sticky в очереди.
Что было видно в логах
Плагин картинку и кнопки собирал. MAX отклонял само тело запроса:
send_attachments attachments_count=2; has_image=1; button_count=2
send HTTP 400: {"code":"proto.payload","message":"Can't deserialize body"}
Если в сообщении был HTML (жирный заголовок), срабатывал запасной путь и уходил голый текст. Если HTML не было, отправка падала целиком: «Не удалось отправить ни в один target (0/1)».
Красная плашка на вкладке «Техпомощь» рядом с текстом про сертификат Минцифры к этому не относится. Это мёртвый GET /chats: MAX снял метод в июне 2026. На отправку постов он не влияет.
Что на самом деле ломалось
С 19 июля 2026 плагин ходит на platform-api2.max.ru.
Загрузка картинки по-прежнему двухшаговая. CDN после upload отвечает так:
{"photos":{"photoIds":{"token":"mediafile_token"}}}
В POST /messages API2 ждёт только:
{"type":"image","payload":{"token":"mediafile_token"}}
Плагин с версии 1.2.1 клал в image.payload весь JSON ответа загрузки. На старом platform-api.max.ru так работало. На API2 схема строже и отвечает proto.payload / Can't deserialize body.
Кнопки «Читать» и «Подписаться» тут ни при чём: без картинки текстовая отправка проходила с кодом 200.
Что я поправил в 1.11.9
1. Token из ответа загрузки
Из photos.*.token забирается только токен. В API уходит {"token":"..."}. Если токена нет, но есть https-URL, уходит {"url":"..."}. Сырой JSON step2 больше не отправляется.
2. Fallback не выкидывает вложения
Если HTML-вариант не проходит, первый повтор идёт с теми же картинкой и кнопками, но без format. Голый текст без вложений это только второй запасной путь. Тот же повтор включается и для plain-отправки с вложениями: иначе 400 на картинке оставлял пост в ошибке без второй попытки.
3. Жирный заголовок через <b>
Официальные примеры MAX используют <b>, не <strong>. Заголовок по-прежнему жирный.
4. Список чатов
GET /chats больше не вызывается. На вкладке «Техпомощь» нет красной ошибки, которую можно принять за проблему с сертификатом. Chat ID по-прежнему копируется из клиента MAX. У каналов ID часто с минусом.
Что сделать вам
- Обновите плагин до 1.11.9. С включённым GitHub updater релиз подтянется сам. Либо скачайте ZIP с GitHub Releases.
- Нажмите «Отправить тест». В логе
sendдолжен быть HTTP 200. В группе картинка, текст и кнопка. - Если пост уже висит в ошибке, отправьте его ещё раз кнопкой «Отправить сейчас» или поставьте в очередь заново.
Сертификаты Минцифры на хостинге ради этой ошибки ставить не нужно. TLS и так живой, если текстовые сообщения доходили.
SHA-256 архива релиза: eb8e61567c8a65bf673c5159eadd6b6bb9c4387ea68f41ae42fab646ac75437e.
Для тех, кто копает глубже
Симптом легко спутать с «сертификатом Минцифры» или с мёртвым GET /chats. Смотреть нужно в тело POST /messages: в image.payload уходил сырой JSON загрузки, а API2 ждёт только {"token":"..."}.
- Endpoint:
POST https://platform-api2.max.ru/messages?chat_id=… - Ошибка:
proto.payload/ Can’t deserialize body - Триггер:
image.payload= сырой JSON{"photos":{...}} - Фикс:
payload: {"token":"..."}изphotos.*.token - Docs MAX: отправка медиа
- Changelog: CHANGELOG.md
Полный список правок: CHANGELOG.md. Страница проекта: MAX Autopost на krivoshein.site.
Поддержка: aleksey@krivoshein.site · Issues на GitHub.
MAX Autopost (Free): автопостинг записей WordPress в мессенджер MAX. MIT.