# Как проверить подписку пользователя на канал в 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fstrk.io/knowledge_base/instructions/kak-proverit-podpisku-polzovatelya-na-kanal-v-max.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
