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


Рассказывает сотрудница 1 линии поддержки Аня Дыма

Иногда требуется проверить, подписан ли юзер на канал или группу Telegram. Например, для того, чтобы сегментировать пользователей бота.

Для проверки подписки пользователя бота к группе/каналу Телеграм можно воспользоваться методом getChatMember. Подробнее о нем можно ознакомиться в документации телеграм.
При проверке на подписку в начале сценария, начните с блока код:
$token = "токен" // токен бота
$chatId = "-4098…" // id чата группы в котором будет выполняться проверка
$username = $rawRequest.message.from.username
$clientId = $rawRequest.message.from.id // получаем user_id
25
Для получения токена бота используйте BotFather. Токен в блоке код должен совпадать с токеном бота, к которому подключен сценарий в каналах Aimylogic.
ID чата группы можно получить, добавив в группу бота getmyid_bot , получить chat ID и потом удалить его.

Далее добавляем в сценарий блок HTTP запрос. Выбираем метод POST. В url добавляем https://api.telegram.org/bot${token}/getChatMember.
На вкладке Response любое имя переменной, например $Member и значение $httpResponse.result.status

На кладке Body добавляем:

{
"chat_id" : $chatId,
"user_id" : $clientId
} 


Статус пользователя в группе/канале будет храниться в $httpResponse.result.status Их всего 5:

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

Соединяем первый блок код с HTTP запросом через Переход и делаем связи от HTTP запроса. При его успешном выполнении - добавляем блок условие: $httpResponse.result.status == "member"
Если вы создатель группы/канала и тестируете проверку со своего аккаунта, можно добавить еще одно условие $httpResponse.result.status == "creator"

От условий $httpResponse.result.status == "member" и $httpResponse.result.status == "creator" делаем связи на продолжение сценария для подписчиков. От else - для пользователей, которые не подписаны на группу/канал.

Далее бота необходимо добавить в группу/канал, для которого выполняется подписка, и выключить доступ к сообщениям группы, чтобы бот не реагировал там на сообщения.
Доступ к сообщения выключается в настройках бота в BotFather Напишите команду /mybots
Выберите нужного бота
Перейдите в Bot SettingsGroup Privacy
Выберите Turn on
Вы также можете загрузить готовый шаблон сценария к себе в проект Aimylogic: ссылка

Инструкция, как импортировать проект.