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

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

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

.*

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

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

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

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

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

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

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

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

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

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

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

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. Следующим шагом мы будем прибавлять по одному зашедшему юзеру в значение переменной с помощью {{\inc}}.

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

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

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

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