Реферальная система в боте

Для создания реферальной системы мы будем использовать параметр ссылки диплинка как идентификатор ссылки, чтобы определить, по ссылке какого именно пригласившего пользователя вошел приглашенный. Для примера мы взяли параметр this_user.platform_id (id на платформе приглашающего пользователя в боте).

1. Настройте Диплинк с регулярным выражением, которое будет ловить любой ввод. Для этого в Значении добавьте:

.*

Когда приглашенный пользователь будет заходить по ссылке из Диплинка, то параметр с его ссылки при входе в бот будет записываться в переменную refSystem.

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

После создания события обязательно сохраните изменения кнопкой Сохранить.

Из Настроек перейдем в редактор бота и оформим Стартовый экран, куда попадет пользователь по реферальной ссылке.

2. Первым компонентом поставим проверку переменной ban, чтобы один пользователь не смог воспользоваться реферальной ссылкой больше одного раза.

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

3. Ниже добавляем Развилку, в которой проверяем переменную refLink в Имени переменной, откуда развилка возьмет значение.

Добавим одну цель в Развилке, значение оставим пустым, добавим переход на экран «Сообщение после того, как получил ссылку».

4. В переменную refSystemFirst вписываем значение {{refSystem}}. Далее добавим переменную refSystemFirst в Развилку в поле Имя переменной, откуда развилка возьмет значение. Через Цель по умолчанию Развилка будет отправлять пользователя на экран «Создание реферальной ссылки».

Также в развилке добавим Цель без значения, которая будет переводить на экран «Отправка внешнего события по рефералке».

Готовый Стартовый экран будет выглядеть так:

5. Оформим экран «Создание реферальной ссылки».

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

Начало ссылки скопируем из настроек Диплинка:

В конце ссылки добавим айди пользователя, который в данный момент идет по сценарию бота:

{{this_user.platform_id}}

Для Телеграм получилась ссылка такого вида:

https://t.me/aldkfgj_bot?start={{this_user.platform_id}}

7. Запишем её в значение переменной, из платформ оставим только Телеграм.

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

8. Затем выведем переменную в текст и пришлем:

Ваша ссылка {{refLink}}

9. Добавим перемотку на экран «Сообщение после того, как пользователь получил ссылку». Там может начинаться основной сценарий бота.

Все вместе выглядит так:

Мы оформили создание реферальной ссылки, теперь оформим отправку Внешнего события по рефералке для пользователя, по ссылке которого прошли в бота.

10. Вернемся в Настройки и создадим Внешнее событие
После сохранения появится ссылка, которую мы будем использовать далее в URL запроса.

11. В редакторе ботов на новом экране, который назовем «Отправка внешнего события по рефералке» присвоим пользователю переменную ban со значением 1, чтобы не допустить повторного использования реферальной ссылки.

12. Далее отправим данные пригласившему с помощью POST запроса.

Тело запроса:

{
    "platform": "any",
     "users": [ "{{refSystemFirst}}" ],
     "data": {
     "text": "{{this_user.platform_id}}"}
}

Для URL запроса используем ссылку из настроек Внешнего события, которое настроили ранее.

13. Отправим пользователя на экран «Создание реферальной ссылки»‎.

В целом, оформленный только что экран будет таким:

Создадим экран, который придет пригласившему, когда сработает Внешнее событие. Назовем этот экран «РЕФ Сообщение пригласившему»‎.

14. Для начала создадим пустую переменную summRefUser.

15. Следующим шагом мы будем прибавлять по одному зашедшему юзеру в значение переменной с помощью типа данных Увеличить число на

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

По вашей ссылке вошел пользователь {{last_request.text}}
По вашей ссылке пришло {{summRefUser}} пользователей.

Полностью оформленный экран будет таким:

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

В начало ↑