> For the complete documentation index, see [llms.txt](https://docs.fstrk.io/knowledge_base/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fstrk.io/knowledge_base/instructions/kak-proverit-podpisku-polzovatelya-na-kanal-v-max.md).

# Как проверить подписку пользователя на канал в MAX

Для проверки подписки пользователя на канал в MAX необходимо выполнить следующие шаги:

### 1. Добавление бота в канал

* Для того чтобы реализовать механизм проверки подписки пользователя на канал, необходимо добавить бота в этот канал.

***

### 2. Создание узла с HTTP-запросом

* Создайте узел с помощью зелёной кнопки с плюсиком, расположенной вверху над деревом узлов, или с помощью кнопки **Создать** в контекстном меню, открывающемся при нажатии правой кнопкой мыши на любой из имеющихся узлов.

<figure><img src="/files/SCVHcBUmH2Yfx3oIf0Ce" alt="" width="563"><figcaption><p>Создание нового узла</p></figcaption></figure>

* Введите наименование узла. Например, `Проверка подписки на канал в MAX`

{% hint style="warning" %}
Название не должно содержать символы слеш (**/**) и вопросительные знаки (**?**)
{% endhint %}

<figure><img src="/files/02dYrwODMC4AZ9EfdEB4" alt="" width="563"><figcaption><p>Наименование созданного узла</p></figcaption></figure>

* Теперь перейдём к настройке узла.

Если блок **Интеграции и процедуры** свёрнут, нажмите на него, чтобы развернуть его.

<figure><img src="/files/ML3acOVFGnYMRsroyQbC" alt=""><figcaption><p>Настройка узла: блок Интеграции и процедуры</p></figcaption></figure>

1. Необходимо поставить галочку возле пункта **Сделать HTTP-запрос**
2. Вставьте в поле запроса следующий код:

{% code lineNumbers="true" fullWidth="false" %}

```json
{
    "method": "GET",
    "url": "https://platform-api.max.ru/chats/CHANNEL_ID/members?user_ids={{ max_contact_id }}",
    "headers": {
        "Authorization": "MAX_BOT_TOKEN"
    }
}
```

{% endcode %}

<figure><img src="/files/40rAiZMDV8ERErMoOIip" alt=""><figcaption><p>Настройка узла: создание HTTP-запроса</p></figcaption></figure>

* Теперь необходимо заменить:\ <mark style="color:green;">`CHANNEL_ID`</mark> — [на ID канала в MAX](#gde-naiti-id-kanala-v-max)\ <mark style="color:green;">`MAX_BOT_TOKEN`</mark> — [на токен бота в MAX](#gde-naiti-token-bota-v-max)

<details>

<summary>Где найти ID канала в MAX?</summary>

ID канала указан в адресной строке браузера, если открыть канал в веб-версии мессенджера MAX.

<figure><img src="/files/hVl0jpvv58WEy2u5KSYg" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Где найти токен бота в MAX?</summary>

Токен для вызова HTTP-запросов присваивается при создании бота. Его можно найти на [платформе MAX для партнёров](https://business.max.ru/self) в разделе **Чат-боты** → **Интеграция** → **Получить токен**.

Рекомендуем не разглашать токен посторонним, чтобы они не получили доступ к управлению ботом.

<figure><img src="/files/8edJbyydyUSqZShN3dTL" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/l0M08F7NQlbd3GxtFQvi" alt=""><figcaption></figcaption></figure>

</details>

***

### 3. Настройка процедуры

В результате выполнения запроса, настроенного во [втором пункте](#id-2.-sozdanie-uzla-s-mekhanizmom-proverki), в системной переменной `http_response` будет содержаться ответ.

Он выглядит следующим образом, если пользователь подписан на канал:

{% code lineNumbers="true" %}

```json
{
    "members": [
        {
            "last_access_time": 1776753623050,
            "is_owner": false,
            "is_admin": false,
            "join_time": 1776753623051,
            "user_id": 84081948,
            "first_name": "Boris",
            "last_name": "Zhdanov",
            "is_bot": false,
            "last_activity_time": 1776885591000,
            "avatar_url": "https://i.oneme.ru/i?r=BTFjO43w8Yr1OSJ4tcurq5HiYvvbp1oENLB-swfQ2_UvNup3RaqN0IvqaF1l1qv0Tos",
            "full_avatar_url": "https://i.oneme.ru/i?r=BTFjO43w8Yr1OSJ4tcurq5HiiBHyEBXEqVN2gbFKFxlYCep3RaqN0IvqaF1l1qv0Tos",
            "name": "Boris Zhdanov"
        }
    ]
}
```

{% endcode %}

И вот так, если пользователь не подписан:

{% code lineNumbers="true" %}

```json
{
    "members": []
}
```

{% endcode %}

Таким образом, после запроса необходимо обработать ответ. А именно — проверить, является ли массив `members` пустым. Если да, значит пользователь не подписан. Если массив не пустой, значит пользователь подписан.

Для реализации данной логики необходимо в редакторе процедур добавить следующий код:

{% code lineNumbers="true" %}

```jinja
{% if http_response.members.0 %}
	{# Здесь выстраиваем логику для подписанного пользователя #}
	{# Переводим пользователя в узел "Проверка подписки на канал: подписан" с помощью тега switch #}
	{% switch "Проверка подписки на канал: подписан" %}
{% else %}
	{# Здесь выстраиваем логику для пользователя, который не подписан #}
	{# Переводим пользователя в узел "Проверка подписки на канал: не подписан" с помощью тега switch #}
	{% switch "Проверка подписки на канал: не подписан" %}
{% endif %}
```

{% endcode %}

<figure><img src="/files/ygWMWuqJi7difIVa77DE" alt=""><figcaption><p>Настройка узла: логика обработки ответа</p></figcaption></figure>

{% hint style="info" %}
Не забывайте сохранять настройки узла после внесения изменений.
{% endhint %}

В приведённом примере, если пользователь подписан на канал, он переводится в узел `Проверка подписки на канал: подписан`. В ином случае — в узел `Проверка подписки на канал: не подписан`.

{% hint style="warning" %}
Узлы `Проверка подписки на канал: подписан` и `Проверка подписки на канал: не подписан` должны быть заранее созданы, иначе не удастся сохранить процедуру.
{% endhint %}
