April 24, 2024

PuzzleBot • Механизм подписки с помощью Сценариев

В данной статье рассмотрим процесс создания механизма для управления подпиской с помощью модуля "Сценарии" в Puzzlebot.

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

В качестве примера мы рассмотрим платную подписку (30 дней) на индивидуальные консультации по разработке веб-сайтов.


❓ Что нам потребуется:


Шаг 1 • Создаем числовую персональную переменную

1.1 Переходим в раздел "Переменные":

1.2 Далее нажимаем на кнопку "Добавить переменную":

1.3 Задаем имя переменной DAYS_LEFT (1) и формат значения "Число" (2):

Переменная DAYS_LEFT будет хранить в себе остаток дней подписки.


Шаг 2 • Создаем категории пользователей в разделе "Модерация"

2.1 Переходим в раздел "Модерация":

2.1 Нажимаем на кнопку кнопку "+" (1), вводим название категории "Активная подписка" (2) и нажимаем "Создать категорию" (3)

2.3 По аналогии с предыдущим действием создаем вторую категорию "Неактивная подписка":

Категория "Активная подписка" будет присваиваться пользователям, которые оплатили/продлили подписку для получения индивидуальной консультации, и соответственно, вторая категория "Неактивная подписка" будет присваиваться тем, у кого срок подписки подошел к концу.


Шаг 3 • Создаем команды и условия в Конструкторе

3.1 Переходим во вкладку "Конструктор":

3.2 Создаем три команды "Подписка оплачена", "Напоминание за 2 дня" и "Истек срок подписки":

Команда "Подписка оплачена"

Команда "Напоминание за 2 дня"

Команда "Истек срок подписки"

3.3 Также, создаем условие "Проверка DAYS_LEFT", в котором мы будем проверять нашу переменную содержащую остаток дней:

• Добавим "Правило 1" - если переменная DAYS_LEFT равна 2, то отправляем команду "Напоминание за 2 дня":

• Добавим "Правило 2" - если переменная DAYS_LEFT равна 0, то отправляем команду "Истек срок подписки":

В итоге должна получиться следующая конструкция:

Не забываем сохранить внесенные изменения во вкладке "Конструктор", нажав на кнопку сохранения (подсвечена оранжевым):


Шаг 4 • Создаем сценарий "Подписка"

4.1 Переходим во вкладку "Сценарии":

4.2 Нажимаем на кнопку "Добавить сценарий":

4.3 Видим, что появился сценарий "Название сценария 1":

4.4 Изменим название на "Счетчик дней" с помощью кнопки "Переименовать":

4.5 Откроем сценарий "Счетчик дней" и добавим пост:

4.6 В настройках поста установим тип отправки "Через" (1) один день (2), повторение поста ежедневно (3):

4.7 В действиях поста добавляем "Изменить переменную" и вычитаем "1" из переменной DAYS_LEFT с выполнением "ДО" (3), далее отправляем условие "Проверка DAYS_LEFT" (4)

Опубликуем все изменения сделанные в посте:

И установим пост в статус "Запланирован":

В настройках сценария "Счетчик дней" активируем опцию "Перезапуск при повторном вызове сценария" и нажимаем "Сохранить":


Шаг 5 • Применение сценария и категорий в Конструкторе

5.1 Вернемся во вкладку "Конструктор" и откроем команду "Подписка оплачена", добавим в ней следующие действия:

- Добавляем к переменной DAYS_LEFT (1) значение "30" (2), что означает 30 дней (1 месяц):

- Активируем сценарий "Счетчик дней" (1), который будет ежедневно вычитать 1 день из переменной DAYS_LEFT и проверять в ней текущий остаток дней:

- Добавляем пользователя в категорию "Активная подписка" (1):

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

5.2 Далее переходим к команде "Истек срок подписки" и добавляем следующие действия:

- Отключаем сценарий "Счетчик дней" (1):

- Добавляем пользователя в категорию "Неактивная подписка" (1):

По итогу в команде "Истек срок подписки" должны быть два действия как показано на изображении ниже:

Резюмируем:

После того, как пользователь оплачивает подписку у него запускается команда "Подписка оплачена", в которой ему присваиввется категория "Активная подписка", а также, добавляется 30 дней в переменную DAYS_LEFT и запускается сценарий "Счетчик дней", который ежедневно будет вычитать из переменной 1 день и с помощью условия проверять остаток дней.

Если осталось 2 дня до конца подписки, то пользователю отправляется команда "Напоминание за 2 дня"; если осталось 0 дней, то пользователю отправляется команда "Истек срок подписки", в которой завершается сценарий "Счетчик дней" и назначается категория "Неактивная подписка".

В зависимости от назначенной категории пользователю можно выдавать или ограничивать доступ к определенным командам в боте (в нашем примере доступ к индивидуальной консультации со специалистом), но об этом мы расскажем вам в другой статье "Как ограничить доступ пользователей с помощью категорий".