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-е, однако при этом сделает вашу систему менее гибкой, не удобной для внесения изменений, а так же возможно затруднит использование вариантов с динамическим временем бонуса - меняющимся в зависимости от активности юзера, который был описан выше. Поскольку такой тип бонуса в большей мере предназначен для сложных проектов, то подобный менее гибкий вариант рассматривать подробно не будем.