Skip to main content

Life-Hack #7: Бонус с произвольной задержкой

Данный Life-Hack позволит вам создавать кастомные бонусные кнопки с задержкой между срабатываниями по вашему выбору.

Life-Hack - предполагает использование имеющегося функционала не очевидными и достаточно хитроумными способами, создавая в своём боте функции не заложенные разработчиками конструктора изначально.

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

 

Приобретение функционала

 

Весь функционал приобретается В ВАШЕМ БОТЕ, для этого перейдите в свой бот:
☞ 🔐Админ | 🧩Расширения

ВАЖНО: Приобретение функционала для бота доступно только Создателю (хозяину) бота. Админы покупать функционал - НЕ МОГУТ!

 

Вам понадобится:

1. Переменные - 1 штука
☞ 🔐Админ | 🧩Расширения | 📂Переменные

2. Action-ы - 3 штуки
☞ 🔐Админ | 🧩Расширения | 📂Action-ы

3. Условия для кнопок
☞ 🔐Админ | 🧩Расширения | 📂Кнопки

4. Макросы и выражения для кнопок
☞ 🔐Админ | 🧩Расширения | 📂Кнопки

 

Создание кастомной бонус кнопки

 

Как это работает

Вы создаете собственную кнопку для начисления Бонуса вашим пользователям, однако вместо подключения к ней обычного функционала бонуса (задержка срабатывания для которого ограничивается 24-мя часами) создаёте свой собственный - с любой задержкой по времени - при помощи Переменных и Action-ов.

 

1. Создаем переменные

Переменная (Даты и Времени) - Переходим в вашем боте:
☞ 🔐Админ | 🗄Переменные | 📕Время | ➕Создать Переменную
Имя переменной: timer, (можете использовать свое).

Мы подразумеваем что начисление бонуса происходит в переменную balance (которая доступна всем изначально и по этой причине создавать отдельно ее не нужно). Если вы предполагаете начисление бонуса в другую переменную, то ее нужно будет приобрести как описано выше и создать как Числовую:
Переменная 2 (Числовая) - Переходим в вашем боте:
☞ 🔐Админ | 🗄Переменные | 📙Числовые | ➕Создать Переменную
Имя переменной: bonus, (можете использовать свое).

 

2. Создаем свою кнопку для бонуса

Это кнопка меню, которая и будет начислять 10 бонусов, раз в 30 дней.

Естественно эти цифры вы замените на нужные вам или используете Переменные.

2.1 Добавить Кнопку

Нажимаем в вашем боте:
🎛Редактор Кнопок | ➕Добавить Кнопку
Имя кнопки "Получить Бонус".

2.2 Назначить Action-ы

Не выходя из Редактора Кнопок (если вышли зайдите снова) нажимаем инлайн кнопку настроек [*].
Нажимаем "Назначить Pre-Action"

● Выбираем "Action Инициализации"
Переменная для изменения: timer
Значение: {dt_add(dt_now(), -30*24)}

Тут мы инициализируем переменную времени (которая по умолчанию всегда содержит время "сейчас" и по этой причине, без инициализации с ней практически невозможно работать. Инициализируем мы ее временем на 30 дней раньше чем "сейчас". Подробнее о работе со временем в руководстве по "Дате и Времени".

● Выбираем "Action Чисел"
Переменная для изменения: balance
Тип операции: Изменить Значение
Значение: 10 (десять)
Условие: {dt_passed("%timer%", "d") >= 30}
Сообщение о Неудаче: "30 дней ещё не прошло! Возвращайтесь через: {floor(30 - (dt_passed("%timer%", "d")))} дней"
Сообщение об Успехе: "Вам начислено: %balance_v% бонусов!"

Тут мы создаем начисление бонуса при условии что с момента последнего бонуса, время которого в переменной timer мы назначили при инициализации, прошло 30 дней.

Подробнее о функции floor() использованной в сообщении о Неудаче читай в руководстве по "Выражениям".
Макрос %balance_v% покажет сумму на которую изменилась переменная balance. В основном это нужно если размер бонуса вы будете задавать через переменную.

Об использовании "_v" в конструкции %balance_v% читайте в руководстве по Action-у Чисел.

● Выбираем "Action Чисел"
Переменная для изменения: timer
Тип операции: Задать Значение
Значение: {dt_now()}
Условие: {dt_passed("%timer%", "d") >= 30}
Сообщение о Неудаче: "➖ Задать Пустым".
Сообщение об Успехе: "Следующий бонус через 30 дней."

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

 

Дополнительная информация

 

Использование Переменных

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

• • •

Создание реферальной матрицы

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

• • •

Информационное сообщение кнопки

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

• • •

Более дешевый вариант

Если вместо времени "сейчас" в переменную timer сохранять не время нажатия, а время следующего получения бонуса в будущем, то от Action-а Инициализации можно будет отказаться, это позволит вам сэкономить на одном Action-е, однако при этом сделает вашу систему менее гибкой, не удобной для внесения изменений, а так же возможно затруднит использование вариантов с динамическим временем бонуса - меняющимся в зависимости от активности юзера, который был описан выше. Поскольку такой тип бонуса в большей мере предназначен для сложных проектов, то подобный менее гибкий вариант рассматривать подробно не будем.