Проверка подписки на канал/группу в Telegram

Проверка подписки работает только в Telegram.
x
Рекомендуй и зарабатывайРекомендуй Botmother коллегам и получай кешбэк от их оплат

Проверить подписан ли пользователь на группу/канал можно с помощью запроса к Телеграм API методом getChatMember.

Для этого оформите в конструкторе экраны:

1. Создайте экран с компонентом Нативный запрос или просто Запрос. Если вы используете обычный запрос, выберите метод POST и заполните URL запроса:

https://api.telegram.org/botТОКЕН/getChatMember

Где вместо ТОКЕН — токен вашего бота в Телеграм.

В Нативном запросе добавлять токен и выбирать метод не нужно.

2. Добавьте тело запроса:

{
"chat_id": "ID канала",
"user_id": "{{this_user.platform_id}}"
}

Где:

  • ID канала — ID группы/канала, на который проверяется подписка. (Чтобы получить ID канала в Телеграм, нужно открыть канал в веб-версии. В конце адресной строки будет число — это и есть id канала. В начале этого числа допишите: -100. То есть, если в адресной строке веб-версии отобразилось web.telegram.org/a/#-2234567899, то в поле Telegram ID нужно вписать: -1002234567899. ID группы можно увидеть в разделе Пользователи после добавления бота в админы группы).
    Также вместо ID канала можно вставить ссылку на канал в формате @botmothercom. Такая ссылка есть в настройках канала.
  • user_id — id пользователя, у которого мы будем проверять подписку. Можно оставить без изменений, тогда будет проверяться пользователь, который попал на компонент Запрос в боте.

3. Добавьте бота, из которого будет отправляться запрос, администратором со всеми правами в группу/канал. На этот канал мы будем проверять подписку.

4. Добавьте экран с Развилкой. Настройте переход на Развилку с Нативного запроса, в случае удачного выполнения запроса.

5. В поле «Что проверяется развилкой» выберите переменную, имя переменной для проверки: last_native_request.result.status

Это значит, что развилка будет брать значение из этой переменной, если использовать Нативный запрос. Если вы используете обычный запрос, то развилка будет брать значение с last_request.result.status

6. Настройте Условие целей развилки для перехода пользователя на экраны в зависимости от наличия/отсутствия подписки.

В ответе от сервера в переменной last_native_request.result.status и last_request.result.status могут быть следующие значения:

  • member — пользователь является подписчиком;
  • left — пользователь не подписан;
  • kicked — пользователь удален;
  • administrator — админ;
  • creator — создатель.

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

(member|creator|administrator)

Для всех остальных — не подписанных и удаленных из канала, регулярное выражение будет выглядеть так:

(left|kicked)

7. Оформите экраны для ответа пользователю.

Как открывать доступ к каналу/группе после оплаты в боте, можно посмотреть тут →

Оплату на стороннем сайте можно сделать с помощью Внешнего события

В начало ↑