Что мы делаем
Сценарий— «подпишись на канал — получи лид-магнит» — для мессенджера MAX. Пользователь нажимает кнопку, бот проверяет через API платформы MAX, состоит ли он в нужном канале, и в зависимости от результата либо выдаёт PDF-гайд, либо просит сначала подписаться.
Как это работает
В FSTRK есть готовый DTL-тег max.is_channel_member — он сам обращается к API платформы MAX и возвращает, состоит ли пользователь в нужном канале. Собирать HTTP-запрос вручную не нужно: вся логика проверки укладывается в один тег внутри процедуры узла.
Бот должен быть заранее добавлен в канал в MAX. Без этого проверка не будет работать независимо от того, подписан пользователь или нет.
Шаг 1. Готовим бота и канал
- Добавьте бота в канал в MAX.
- Узнайте 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. Собираем сценарий вокруг проверки
- Пользователь нажимает кнопку «Забрать PDF-гайд» в любом месте сценария.
- Бот переходит в узел «ЛидМагнит — подписка», который просит подписаться на канал (со ссылкой на него) и содержит кнопку «Я подписался».
- Кнопка «Я подписался» ведёт в узел проверки подписки из Шага 2.
- Дальше срабатывает ветвление:
- состоит в канале → узел «ЛидМагнит — выдача PDF» отправляет сообщение с прикреплённым файлом;
- не состоит → узел «ЛидМагнит — не подписан» объясняет, что подписка не найдена, и показывает кнопку «Проверить снова».
Кнопка повторной проверки
Кнопку «Проверить снова» в узле «не подписан» настраиваем с типом действия «Переход на узел», а в качестве целевого узла указываем «ЛидМагнит — проверка подписки» — тот же узел из Шага 2. Кнопка просто повторяет проверку заново.

Если проверка не срабатывает
Если is_member всегда приходит пустым/ложным независимо от реальной подписки — проверьте по порядку:
- бот действительно добавлен в канал (Шаг 1, пункт 1);
channel_uidв теге совпадает с ID из адресной строки веб-версии MAX;contact_idв теге действительно содержитmax_contact_id, а не что-то заменённое вручную по ошибке.
Итог
Мы настроили узел с процедурой проверки подписки через тег max.is_channel_member и собрали вокруг него точно такой же сценарий выдачи лид-магнита, что и для Telegram — с проверкой подписки и возможностью повторить попытку. Разница с TG-версией — только в названии тега, вся остальная логика сценария идентична.
Подробнее про аналогичную настройку для Telegram — в статье Как настроить сценарий проверки подписки на TG-канал.