Иногда нужно ограничить доступ к боту для определённого круга лиц. Можно запрашивать логин и пароль, но, когда список аккаунтов определён, иногда может быть достаточно ограничить доступ для определённых аккаунтов (например, если вы хотите, чтобы только вы, как админ, или ваши клиенты, имели доступ к определённым частям сценария). В данной статье мы рассмотрим, как можно ограничить доступ к боту для определённых аккаунтов Telegram.

В обоих случаях будем ограничивать доступ по username пользователя.

Username пользователя телеграма - это уникальный идентификатор аккаунта. Посмотреть его можно в настройках телеграма (Настройки - Изменить профиль - Имя пользователя). Либо вы можете попросить пользователей написать чат-боту, и автоматически собрать их юзернеймы, отправив их себе в телеграм сообщением либо в гугл таблицу с помощью сервиса IFTTT.

Username - это не имя пользователя!

Внимание! Если у вас в сценарии есть глобальный блок Фраз, то бот будет предоставлять пользователю информацию согласно реакциям из глобального блока фраз. Решение - каждый раз после глобального блока проверять юзернейм пользователя. В ближайшее время мы опубликуем другой вариант авторизации, который исключит эту проблему.

Ограничим доступ средствами сценария

Вы можете разрешить доступ к боту только тем пользователям, username которых прописан в сценарии. Для этого в блоке Условия пропишите:
$rawRequest.message.from.username === "username"

вместо username укажите юзернейм пользователя (идентификатор аккаунта Telegram)



Если их username соответствует нашему списку, будем приветствовать их, а если нет, сообщим, что доступ запрещён:



Далее. вы можете отправлять данные о том, что определённый пользователь воспользовался ботом, сообщением в телеграм по примеру этой статьи: Как валидировать городской номер телефона и отправить его в телеграм с помощью telegram api

Либо можете отправлять данные в гугл-таблицу с помощью сервиса IFTTT: Интеграция с IFTTT

Используем гугл таблицы

Если у вас много пользователей телеграма, которым нужно предоставить доступ к боту, а остальным пользователям доступ запретить, вы можете хранить данные этих пользователей в гугл таблице.

Создайте гугл-таблицу со списком юзернеймов пользователей, которые будут иметь доступ к боту:


В таблице нужно перечислять именно юзернеймы пользователей (идентификаторы их аккаунтов), а не имена или телефоны.

Опубликуйте эту таблицу. Чтобы опубликовать гугл-таблицу, откройте меню Файл — Опубликовать в веб (File — Publish to the web). Откроется окно, в котором нужно просто нажать на кнопку Опубликовать (Publish).

Создайте блок условий с этим содержимым:
$login = $rawRequest.message.from.username

Свяжите его с HTTP-запросом:



Содержимое HTTP-запроса:
URL: https://tools.aimylogic.com/api/googlesheet2json?id=айдидокумента
где айдидокумента - это идентификатор вашей таблицы, который содержится в url-пути таблицы после "https://docs.google.com/spreadsheets/d/":



Переменная $users значение: _.findWhere($httpResponse, {username: $login})



Далее связь с блоком условий, в котором написано просто:
$users

Если в переменной $users что-то будет, то бот будет приветствовать пользователя, если нет - "Доступ запрещён". Вот как будет выглядеть цепочка экранов:



Вы также можете ознакомиться с подробной инструкцией о том, как обращаться к пользователям по имени и как использовать другие значения переменной $rawRequest читайте здесь.
Была ли эта статья полезна?
отменить
Спасибо!