Проверка подписки на канал или на группу Telegram
Иногда требуется проверить, подписан ли юзер на канал или группу Telegram. Например, для того, чтобы сегментировать пользователей бота.
Для проверки подписки пользователя бота к группе/каналу Телеграм можно воспользоваться методом getChatMember
.
Подробнее о нем можно ознакомиться в документации телеграм.
При проверке на подписку в начале сценария, начните с блока код:
$token
= "токен" // токен бота
$chatId
= "-4098…" // id чата группы в котором будет выполняться проверка
$username
= $rawRequest.message.from.username
$clientId
= $rawRequest.message.from.id
// получаем user_id
Для получения токена бота используйте
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 Settings
→ Group Privacy
Выберите Turn on
Вы также можете загрузить готовый шаблон сценария к себе в проект Aimylogic: ссылка
Инструкция, как импортировать проект.