Как настроить сценарий проверки подписки на MAX-канал

Что мы делаем

Сценарий— «подпишись на канал — получи лид-магнит» — для мессенджера MAX. Пользователь нажимает кнопку, бот проверяет через API платформы MAX, состоит ли он в нужном канале, и в зависимости от результата либо выдаёт PDF-гайд, либо просит сначала подписаться.

Как это работает

В FSTRK есть готовый DTL-тег max.is_channel_member — он сам обращается к API платформы MAX и возвращает, состоит ли пользователь в нужном канале. Собирать HTTP-запрос вручную не нужно: вся логика проверки укладывается в один тег внутри процедуры узла.

Бот должен быть заранее добавлен в канал в MAX. Без этого проверка не будет работать независимо от того, подписан пользователь или нет.

Шаг 1. Готовим бота и канал

  1. Добавьте бота в канал в MAX.
  2. Узнайте ID канала — откройте канал в веб-версии MAX и посмотрите на адресную строку браузера: ID канала указан прямо в ней.
📸 Где посмотреть ID канала

Шаг 2. Создаём узел проверки подписки

Создайте новый узел и назовите его, например, ЛидМагнит - проверка подписки. В настройках узла включите тумблер «Действия», а во вкладке «Расширенный режим (DTL-код)» пропишите логику проверки и ветвления:

{% max.is_channel_member channel_uid=max_channel_id contact_id=max_contact_id as is_member %}
{# проверяем ответ от Max для данного пользователя #}
{% if is_member %}
{# пользователь подписан на канал #}
{% switch "ЛидМагнит - выдача PDF" %}
{% else %}
{# пользователь не подписан на канал #}
{% switch "ЛидМагнит - не подписан" %}
{% endif %}
```

Заменяем max_channel_id на ID канала из Шага 1. max_contact_id трогать не нужно — это системная переменная, аналог messenger_id в Telegram: она автоматически подставит MAX ID пользователя, который сейчас находится в сценарии.

Названия узлов — под ваш сценарий

"ЛидМагнит - выдача PDF" и "ЛидМагнит - не подписан" нужно создать заранее и подставить сюда свои названия — без этого не получится сохранить процедуру: switch не сможет сослаться на несуществующий узел.

Шаг 3. Собираем сценарий вокруг проверки

  1. Пользователь нажимает кнопку «Забрать PDF-гайд» в любом месте сценария.
  2. Бот переходит в узел «ЛидМагнит — подписка», который просит подписаться на канал (со ссылкой на него) и содержит кнопку «Я подписался».
  3. Кнопка «Я подписался» ведёт в узел проверки подписки из Шага 2.
  4. Дальше срабатывает ветвление:
    • состоит в канале → узел «ЛидМагнит — выдача PDF» отправляет сообщение с прикреплённым файлом;
    • не состоит → узел «ЛидМагнит — не подписан» объясняет, что подписка не найдена, и показывает кнопку «Проверить снова».

Кнопка повторной проверки

Кнопку «Проверить снова» в узле «не подписан» настраиваем с типом действия «Переход на узел», а в качестве целевого узла указываем «ЛидМагнит — проверка подписки» — тот же узел из Шага 2. Кнопка просто повторяет проверку заново.

Если проверка не срабатывает

Если is_member всегда приходит пустым/ложным независимо от реальной подписки — проверьте по порядку:

  • бот действительно добавлен в канал (Шаг 1, пункт 1);
  • channel_uid в теге совпадает с ID из адресной строки веб-версии MAX;
  • contact_id в теге действительно содержит max_contact_id, а не что-то заменённое вручную по ошибке.

Итог

Мы настроили узел с процедурой проверки подписки через тег max.is_channel_member и собрали вокруг него точно такой же сценарий выдачи лид-магнита, что и для Telegram — с проверкой подписки и возможностью повторить попытку. Разница с TG-версией — только в названии тега, вся остальная логика сценария идентична.

Подробнее про аналогичную настройку для Telegram — в статье Как настроить сценарий проверки подписки на TG-канал.