Бот в MAX молчит: четыре скрытые проблемы Bot API нового российского мессенджера
Если ваш бот для мессенджера MAX отправляет сообщение, сервер отвечает 200 OK, а пользователь его не получает, проблема не в сети. Это одна из четырех скрытых ошибок Bot API MAX, которые не описаны в документации, но могут стоить вам нескольких вечеров отладки. В этой статье мы разберем каждую из ни

Если ваш бот для мессенджера MAX отправляет сообщение, сервер отвечает 200 OK, а пользователь его не получает, проблема не в сети. Это одна из четырех скрытых ошибок Bot API MAX, которые не описаны в документации, но могут стоить вам нескольких вечеров отладки. В этой статье мы разберем каждую из них и предложим рабочие решения.
MAX — новый российский мессенджер, который позиционируется как альтернатива Telegram и WhatsApp. Его Bot API во многом повторяет Telegram Bot API, но имеет принципиальные отличия, которые разработчики обнаруживают только на практике. Проблемы усугубляются тем, что сообщество разработчиков MAX еще малочисленно, а поддержка отвечает не всегда оперативно. Однако знание этих четырех граблей поможет вам сэкономить время и нервы.
Четыре скрытые проблемы Bot API MAX
Где живёт токен
Первая грабля — токен бота. В документации MAX сказано, что токен выдаётся при создании бота через @BotFather. Однако на практике токен может оказаться недействительным, если бот был создан в другой сессии или если токен был отозван. Разработчики часто копируют токен из старого сообщения, не проверяя его актуальность. Решение: всегда запрашивать свежий токен через команду /token в @BotFather и немедленно его использовать.
Почему 404 на чат, в котором ты прямо сейчас переписываешься
Вторая проблема: при попытке отправить сообщение в чат, где вы переписываетесь, API возвращает 404. Оказывается, MAX использует динамические ID чатов, которые меняются при каждом перезапуске клиента или при изменении состава участников. Если вы сохранили ID чата в коде, он может устареть. Решение: получать ID чата через webhook или polling непосредственно перед отправкой, а не хранить его статически.
Как молча испаряется webhook-подписка
Третья грабля — webhook-подписка. Вы настроили webhook, проверили, что MAX отправляет POST-запросы на ваш сервер. Через некоторое время подписка бесшумно удаляется. MAX автоматически отключает webhook, если сервер не отвечает 200 OK в течение определённого времени (обычно 5 секунд) или если возникает ошибка TLS. При этом никакого уведомления не приходит. Решение: настроить мониторинг работоспособности webhook и автоматическое переподключение при сбоях.
Почему MAX не говорит, которому из твоих ботов написали
Четвёртая проблема: когда пользователь пишет боту, MAX не указывает в запросе, какому именно боту адресовано сообщение. Если у вас несколько ботов на одном сервере, вы не можете определить, какой из них должен ответить. В документации MAX нет поля для идентификации бота в объекте Update. Решение: использовать разные URL webhook для разных ботов или добавлять в начало сообщения уникальный префикс, который бот будет распознавать.
Предыстория и контекст
MAX — новый российский мессенджер, позиционируемый как альтернатива Telegram и WhatsApp. Его Bot API во многом повторяет Telegram Bot API, но имеет ряд отличий, которые не описаны в официальной документации. Разработчики, привыкшие к Telegram, ожидают аналогичного поведения, но сталкиваются с неожиданными ошибками. Проблемы усугубляются тем, что поддержка MAX не всегда оперативно отвечает, а сообщество разработчиков ещё малочисленно.
Чем отличается от Telegram Bot API?
В отличие от Telegram, MAX не предоставляет метод getUpdates для получения новых сообщений, а только webhook. При этом webhook не поддерживает самоподписанные сертификаты — требуется валидный SSL-сертификат от доверенного центра. Кроме того, MAX не позволяет устанавливать таймаут ответа webhook — он фиксирован и составляет 5 секунд. Если ваш сервер не успевает ответить, MAX повторяет запрос до трёх раз, а затем удаляет подписку.
Технические подробности
MAX Bot API использует протокол HTTPS и возвращает JSON. Токен бота — строка вида 123456:ABCdef, где первая часть — числовой ID бота, вторая — секретный ключ. ID чата — целое число, которое можно получить из объекта chat в Update. Однако, как упоминалось, ID чата может меняться. Для webhook MAX отправляет POST-запросы на указанный URL с телом в формате JSON. Если сервер отвечает не 200 OK, MAX повторяет запрос с экспоненциальной задержкой (1, 2, 4 секунды), после трёх неудачных попыток подписка удаляется.
Кого затронет и как
Проблемы затрагивают разработчиков, создающих ботов для MAX: от инди-разработчиков до компаний, интегрирующих мессенджер в свои бизнес-процессы. Для российских разработчиков MAX может быть интересен как локальная платформа, но скрытые ошибки усложняют разработку. Пользователи ботов также страдают: они не получают ответы, не зная причины. Конкуренты MAX (Telegram, Viber) имеют более зрелые и документированные API, что даёт им преимущество.
Что будет дальше
Ожидается, что MAX будет дорабатывать Bot API, исправляя описанные проблемы. Разработчикам рекомендуется следить за обновлениями документации и участвовать в бета-тестировании. Пока же единственный способ избежать граблей — делиться опытом и использовать обходные пути, описанные в статье.
Итог
Разработка бота для MAX требует внимательности: токен может быть недействителен, ID чата меняется, webhook-подписка исчезает без предупреждения, а API не идентифицирует бота. Учитывая эти четыре грабли, можно сократить время отладки с недели до получаса. Следите за обновлениями MAX и тестируйте бота в разных сценариях.