May 16

Администрирование чатов и каналов Telegram через Salebot 

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

Про администрирование каналов и чатов

Данная настройка необходима множеству сегментов рынка инфобизнеса: клубы по подписке, выдача закрытых материалов, набор аудитории через закуп рекламы. В общем, способов применения масса.

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

Данные настройки будут сложны для пользователей, которые еще не знакомы с платформой. Если вы один из них - то для начала можете изучить бесплатный марафон по основам платформы salebot. Достаточно перейти вот сюда.

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


Шаг 1. Подключение бота в каналу/чату

Конечно, все наши маннипуляции с каналом будут производиться через Telegram бот. Как его создать и подключить к платформе я пожалуй опущу, поэтому сразу переходим к подключению бота в наш канал или чат, который нужно администрировать.

Бот необходимо добавить администратором со всеми правами. Так как он будет привязан только к salebot - не переживаем, что кто-то другой получит доступ. Все будет только у нас.

После добавления бота администратором, необходимо отправить какое-то сообщение в чат или пост в канал. Это нужно для того, чтобы нам в salebot увидеть канал/чат и получить его ID.

В разделе "Клиенты" мы увидем наш чат или канал в виде карточки клиента. А для того, чтобы увидеть его ID - нужно просто открыть карточку и найти переменную ID в мессенджере:

Этот идентификатор нам нужно скопировать, а затем создать константу и добавить в проект. Как это сделать:

Копируем идентификатор. Переходим в раздел "Настройки проекта", раздел "Константы" и добавляем новую переменную.

Значением переменной будет наш идентификатор. А имя переменной можно задать либо chat_id, либо channel_id. В зависимости от того, что нужно администрировать: чат или канал.

Для чего это нужно: для администрирования доступов мы будем использовать функции. И вместо того, чтобы каждый раз в функции нам использовать числовой идентификатор - мы будем просто вставлять имя переменной. Потом, если вдруг идентификатор изменится, нам нужно будет его скорректировать только в разделе "Константы" и не редактировать функции.

Далее, необходимо в настройках проекта обязательно сгенерировать API ключ для Salebot.

Переходии в настройки проекта, мотаем вниз и нажимаем на кнопку "Сгенерировать". Если API ключ уже есть, то ничего делать не надо. При генерации ключа копировать его тоже не нужно. Нам главное - чтобы он был сгенерирован внутри проекта.

Теперь наш бот и чат/канал связаны с платформой. Далее нам нужно выполнить основные настройки по контролю доступа.


Шаг 2. Настройка реакции на заявку в чат/канал

Так как нам нужен контроль доступов, то нам обязательно сделать канал или чат закрытыми, то есть частными в настройках. И затем сформировать ссылку с заявкой.

Суть настройки - наш бот будет реагировать на заявку и сверять пользователя с данными. Если доступ человеку разрешен, значит заявку принимаем. Если доступа нет, то заявку отклоняем.

Для начала необходимо создать такую ссылку. Сделать это нужно в настройках канала/чата -> Пригласительные ссылки -> Создать ссылку.

И в настройках создания ссылки выбрать "Заявки на вступление". Получившуюся ссылку сохраняем себе и теперь ее можно будет выдавать в боте пользователям.

Далее, нам в Salebot необходимо настроить реакцию на переход по ссылке и отправку заявки от пользователя.

Когда пользователь отправляет заявку то в платформу salebot приходит уведомление "chat_join_request", именно по этому уведомлению мы можем запустить блоки, которые уже среагируют на пользователя.

Создаем блок "Не состояние с условием", в условие как раз прописываем chat_join_request.

Далее, выбор соответствия ставим "По наличию ключевых слов".

Отлично, теперь блок у нас запустится, когда человек отправит заявку.

Но так как у нас уведомление приходит от имени чата/канала, то мы пока не знаем, кто отправляет заявку.

Для того, чтобы нам узнать пользователя, который отправляет заявку, необходимо донастроить наш блок "Не состояние с условием". Сделать так, чтобы платформа получила идентификатор человека и по нему запустила уже другой блок, который как раз и будет работать уже с самим пользователем.

В блок "Не состояние с условием" нам необходимо добавить отправку API-запроса. Достаточно нажать вот сюда и у нас откроется конструктор запроса:

В конструкторе запроса мы прописываем все, как я укажу. Затем немного подправим текст:

Тип запроса выбираем POST-json

URL запроса прописываем такой: https://chatter.salebot.pro/api/#{api_key}/tg_callback

JSON параметры:

{
"user_id": "#{chat_member_id}",
"message": "join_channel",
"group_id": "your_bot"
}

Итак, про параметры.

  1. "user_id": "#{chat_member_id}" - это ID пользователя, его мы можем получить из переменной chat_member_id. Получается что мы как раз обезличенную заявку делаем такой, что теперь платформе понятно, какой пользователь ее отправляет;
  2. "message": "join_channel", где join_channel текст уведомления, которое придет уже для запуска блока по пользователю. Так называемый коллбек. По этому тексту мы настроим блок, который будет добавлять или отклонять заявку человека;
  3. "group_id": "your_bot" - тут нужно вместо your_bot указать никнейм бота, который проверяет заявку. Например thomasking_bot, обязательно, чтобы в конце было bot.

Получается, наш запрос делает следующее: мы находим человека по идентификатору, отправляем ему коллбек для запуска блока через определенный бот.

Благодаря этому мы теперь можем создать новый блок и настроить цепочку, которая будет реагировать на пользователя по условию "join_channel".


Шаг 3. Настройка обработки заявки

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

При этом, дополнительно мы можем настроить разные условия по этой заявке. То есть, принять ее в случае если человек, допустим, купил доступ.

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

Создаем блок "Не состояние с условием" и в условии прописываем текст нашего уведомления из запроса - join_channel. Это все что нужно прописать в первом блоке.

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

В моем случае у человека есть переменная club_active_sub. Это пользовательская переменная. Когда человек покупает доступ к клубу и доступ активен, то переменная равна значению "yes", во всех остальных случаях - если доступ закрыт или не куплен, то "no" или пустая.

Соответственно от нашего блока, который реагирует на условие user_join_channel мы ведем две стрелки, в которых ставим нужные условия.

Если у человека есть доступ к покупке, то значит переменная равна yes, значит в стрелке прописываем club_active_sub = 'yes'. И эта стрелка будет вести в блок, в котором мы одобрим заявку.

Другая стрелка, которая среагирует, если у человека нет доступа к покупке, будет вести в блок, в котором заявка отклоняется.

Теперь мы можем полноценно обработать нашу заявку - принять или отклонить ее, в зависимости от наличия определенных переменных у человека.

Блок, который будет принимать заявку - Не состояние. Внутри него всего одна функция в калькуляторе:

tg_approve_chat_join_request(channel_id, platform_id)

Эта функция принимает заявку в канал с идентификатором channel_id (наша константа, в которой лежит ID канала или чата) по пользователю с идентификатором platform_id.

В этот блок попадают люди, заявку от которых нам нужно принять. Работает это моментально, человеку приходит текст от бота, который мы зададим. В моем случае это "Заявка в канал принята"

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

tg_decline_chat_join_request(channel_id, platform_id)

Данная функция отклоняет заявку по пользователю. Как видите - все очень просто.

У нас получается следующая цепочка:

  1. Блок, который реагирует на заявку. Из этого блока мы отправляем API запрос на пользователя, чтобы его идентифицировать и запустить обработку заявки;
  2. Обработка заявки. Блок запускается по уведомлению из запроса;
  3. Проверка наличия доступов. Одобрять для человека заявку или нет. За счет стрелок мы контролируем, в какой блок отправить человека;
  4. Блоки с функциями на принятие или отклонения заявки;

Теперь вы умеете работать с заявками. Осталось только научиться удалять пользователей из канала/чата, чтобы полноценно уметь автоматизировать модерацию в Telegram.


Шаг 4. Бан и разбан пользователей в чате/канале

Когда у пользователя заканчивается доступ к закрытому каналу или чату, нам необходимо его удалять оттуда. Это касается и клубов по подписке и других продуктов с такими доступами.

Для того, чтобы заблокировать человека в канале/чате необходимо исполнить простую функцию:

tg_ban_chat_member(channel_id, platform_id).

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

channel_id это идентификатор канала или чата, в котором нам нужно забанить пользователя.

Но не редки случаи, когда человек возвращается после долгого отсутствия в клубе. Заново оплачивает абонемент и теперь его снова нужно добавить в канал. Человек не сможет отправить заявку по ссылке, так как он будет забанен и удален.

Возникнет конфликт и Telegram напишет пользователю, что "срок действия ссылки истек"

Чтобы бот имел возможность снова добавлять человека по заявке в чат или канал необходимо исполнить функцию разбана:

tg_unban_chat_member(channel_id, platform_id)

Где channel_id это идентификатор чата или канала. Логика получается следующая:

  1. После первой покупки доступа мы легко автоматически принимаем заявку у человека;
  2. Когда доступ заканчивается, мы удаляем человека из канала/чата через функцию бана;
  3. Если человек заново оплачивает доступ к каналу/чату, мы исполняем функцию разбана и пользователь снова может отправить заявку по ссылке, далее повторяется все с п1.


Итог настройки

Вот так на самом деле всего в 4-5 блоков мы можем внутри Salebot администрировать чаты и каналы в Telegram: принимать или отклонять заявки, банить пользователей, разбанить и т.д.

Применяйте на практике настройки из статьи, ведь платформа Salebot на самом деле куда проще, чем вы думаете.

Подписывайтесь на мой основной канал - https://t.me/headjek_tk, там еще больше материалов по платформе и не только.

Так же доступен вход в мою флагманскую программу по платформе Salebot с проверкой ДЗ от куратора, доступом навсегда и другими необходимыми фишками.