NetrunНа главную

Боты

Бот для мессенджера MAX: где запустить, чтобы работал круглосуточно

· 6 мин чтения

Коротко

Бот для мессенджера MAX должен работать на сервере или хостинге постоянно, а сообщения в рабочем режиме MAX рекомендует получать через вебхук на адрес с HTTPS. Создать бота и получить токен можно на платформе MAX для партнёров, доступной организациям, ИП и самозанятым — резидентам РФ с подтверждённым профилем. Дальше код бота с токеном в переменных окружения публикуется на хостинге: в Netrun для этого не нужно настраивать сервер, а ссылка с HTTPS для вебхука выдаётся сразу. Для круглосуточной работы бота нужен тариф Pro.

  • Ботов MAX создают на платформе MAX для партнёров, и доступ к ней есть у юрлиц, ИП и самозанятых — резидентов РФ.
  • Токен бота MAX передаётся в заголовке Authorization, передача токена в параметрах адреса больше не поддерживается.
  • Документация MAX называет получение сообщений через Long Polling неподходящим для рабочего режима и советует вебхук.
  • Вебхук MAX принимает только адрес с HTTPS на порту 443 и не работает с самоподписанными сертификатами.
  • Официальные библиотеки для ботов MAX есть для JavaScript/TypeScript и Go, а для Python популярна библиотека maxapi.

MAX — российский мессенджер со своей платформой для ботов, и вопрос «где запустить бота» здесь такой же, как в Telegram или ВКонтакте: бот — это программа, которая должна работать постоянно. Пока она запущена на вашем ноутбуке, бот отвечает, а стоит закрыть крышку — и он замолкает. Поэтому код бота переносят на сервер или хостинг, где он работает без вас.

У MAX есть две особенности, которые стоит знать заранее. Во-первых, создать бота может не любой человек, а только подтверждённая организация, ИП или самозанятый. Во-вторых, документация прямо советует для рабочего режима вебхук, а он требует адрес с HTTPS на стандартном порту. Ниже — путь от регистрации до работающего бота. Если вы уже делали бота для другой площадки, многое покажется знакомым: сравните с инструкцией про бота ВКонтакте.

Два способа получать сообщения в боте MAX
КритерийLong PollingВебхук
Как бот узнаёт о сообщенияхСам регулярно спрашивает MAX, нет ли новых событийMAX сам присылает каждое событие на ваш адрес
Что нужно от хостингаПросто постоянно работающая программаРаботающий сервер с адресом HTTPS на порту 443
Позиция документации MAXДля разработки и тестов, не для рабочего режимаРекомендуемый способ для рабочего режима
Что будет при сбоеОграничены скорость и срок хранения событийMAX повторяет доставку до 10 раз с растущим интервалом
Когда выбиратьПока пишете и проверяете бота у себяКогда бот запущен для настоящих пользователей
  1. Подтвердите профиль на платформе MAX для партнёров#

    Боты, каналы и мини-приложения в MAX подключаются через платформу для партнёров на dev.max.ru. По правилам MAX, доступ к ней есть у юридических лиц, ИП и самозанятых, которые являются резидентами РФ, и профиль организации должен пройти верификацию. Если вы делаете бота для заказчика, удобнее, чтобы бота создавал он сам в своём профиле, а вы получили от него токен.

  2. Создайте бота и сохраните токен#

    После создания бота на платформе для партнёров вы получаете токен — длинную строку, по которой MAX узнаёт вашего бота во всех запросах. Токен передаётся в заголовке Authorization, а старый способ с токеном в адресе запроса больше не работает. Храните токен как пароль: у кого он есть, тот может писать от имени бота. Пользователям бот станет доступен после модерации, её статус виден рядом с названием бота.

  3. Выберите библиотеку#

    MAX выпускает официальные библиотеки для JavaScript/TypeScript (пакет @maxhub/max-bot-api) и для Go. Для Python официальной библиотеки нет, но есть популярная maxapi, устроенная в духе aiogram, и её форк проверен командой MAX. Писать бота можно и вовсе без библиотеки, обычными запросами к API, но библиотека избавит от рутины с разбором событий.

  4. Разрабатывайте на Long Polling, работайте на вебхуке#

    Пока вы пишете бота у себя, удобно получать сообщения через Long Polling: бот сам спрашивает MAX о новых событиях, и никакой адрес для этого не нужен. Для рабочего режима документация MAX советует вебхук: MAX сам присылает события на ваш адрес. Адрес должен открываться по HTTPS на порту 443 с настоящим сертификатом, а на каждое событие сервер обязан ответить кодом 200 за 30 секунд, иначе MAX будет повторять доставку.

  5. Вынесите токен в секреты и опубликуйте бота#

    Читайте токен из переменной окружения, а не храните его в коде: так он не попадёт в архив или репозиторий. Бот на вебхуке — это по сути веб-приложение, поэтому он должен слушать адрес 0.0.0.0 и порт из переменной PORT. В Netrun вы загружаете код архивом, папкой или из GitHub, указываете токен во вкладке «Секреты» и получаете ссылку с HTTPS, которую можно отдать MAX как адрес вебхука.

  6. Подпишите вебхук и проверьте логи#

    Адрес вебхука регистрируется запросом POST /subscriptions к API MAX, и при этом можно задать секрет: MAX будет присылать его в заголовке X-Max-Bot-Api-Secret, а ваш сервер — отбрасывать запросы без него. После подписки напишите боту и посмотрите живые логи проекта: если событие дошло, вы увидите его в логах. Если бот молчит, сначала проверьте, что адрес открывается по HTTPS и токен подхватился из секретов.

Бот для MAX упирается в те же вопросы, что и любой другой бот: где он работает постоянно, где хранится токен и как увидеть, что он упал. Отличие в том, что MAX настойчиво советует вебхук, а значит, нужен адрес с HTTPS на стандартном порту. В Netrun такой адрес выдаётся автоматически, токен лежит в зашифрованных секретах, логи видны в кабинете, а упавший проект перезапускается сам. На бесплатном тарифе можно проверить, что бот собрался и отвечает, но работает он там ограниченное время, а для круглосуточной работы нужен Pro. Попробовать Netrun.

Частые вопросы

Может ли обычный человек создать бота в MAX?

По правилам платформы MAX для партнёров — нет: доступ к ней есть у юридических лиц, ИП и самозанятых, которые являются резидентами РФ, и профиль должен пройти верификацию. Частному разработчику проще оформить самозанятость или делать бота в профиле заказчика. Правила площадка может менять, поэтому перед стартом сверьтесь с документацией на dev.max.ru.

Где взять токен бота MAX?

Токен выдаётся на платформе MAX для партнёров после создания бота. Он нужен во всех запросах к API и передаётся в заголовке Authorization. Если токен попал в чужие руки, его стоит заменить и обновить значение в настройках хостинга.

Можно ли перенести бота из Telegram в MAX?

Логику — да: сценарии, тексты, работу с базой можно оставить. Но API у MAX своё, поэтому код, который принимает и отправляет сообщения, придётся переписать под библиотеку MAX. Библиотека maxapi для Python устроена похоже на aiogram, и переход с неё проще.

Почему MAX не принимает адрес вебхука?

Чаще всего адрес открывается по http, а не по https, указан нестандартный порт или сертификат самоподписанный. MAX принимает только HTTPS на порту 443 с сертификатом от доверенного центра. Проверьте, что ссылка открывается в браузере без предупреждений, и укажите её без номера порта.

Можно ли оставить бота на Long Polling?

Технически бот на Long Polling работает, но документация MAX прямо называет этот способ неподходящим для рабочего режима: у него ограничены скорость и срок хранения событий. Для разработки и тестов он удобен, а для настоящих пользователей лучше перейти на вебхук.

Где указать токены и другие секретные значения?

В проекте есть вкладка «Секреты» — там задаются значения из кода, например токен от BotFather. Мы храним их в зашифрованном виде: названия переменных вы видите, сами значения не показываем никому, включая вас.

Что будет с ботом через 3 часа на бесплатном тарифе?

Бот выключится, но код, настройки и секреты останутся на месте — мы ничего не удаляем. Незадолго до выключения мы пришлём предупреждение. Три часа считаются только по работе бота: пока он остановлен, не собрался или упал с ошибкой, время не идёт — можно спокойно чинить код и запускать заново. Подключите тариф Pro, и бот запустится с того же места и будет работать круглосуточно. Новый бот, загруженный после этого, тоже соберётся, но работать не начнёт: бесплатное время считается на аккаунт, а не на каждый проект.

Что будет, если приложение упадёт?

Мы следим за проектами и перезапускаем их при сбое. Статус и логи видны в кабинете сразу, а уведомление приходит, только если приложение так и не вернулось в работу в течение часа: из-за коротких перебоев мы вас не тревожим.

Запустите свой проект

Загрузите код, ответьте на пару вопросов — и получите рабочую ссылку. Есть бесплатный тариф

Попробовать Netrun
Все статьи блога