Skip to main content

Инвест бот (базовые механики)

Ищите как создать инвестиционный бот в Телеграм. В этой статье мы расскажем как создать инвест бот с помощью @MenuBuilderBot. Мы раскроем БАЗОВЫЕ принципы игровой механики получения юзером прибыли по его вкладу с течением времени.

Надо понимать, что самих базовых принципов не достаточно для создания КАЧЕСТВЕННОЙ ИГРЫ "с погружением", однако понимая основы - вы можете приложить их к вашему конкретному проекту в той форме в которой вам это нужно. Для создания необходимого антуража, базовая игровая механика должна быть окружена и обоснована сюжетным сценарием, а также вспомогательным функционалом (пополнением баланса, наличием различных видов балансов для разных внутриигровых валют или предметов, присутствием различных способов оформить базовую механику в какой-то сценарно обоснованный вид, наличием возможности юзеру САМОМУ указывать или выбирать отдельные параметры).

❖ Необходимые навыки

ПРЕДУПРЕЖДЕНИЕ: Данное пособие НЕ ставит перед собой задачу обучения новичков и исходит из того что вы имеете базовые навыки работы с конструктором и УЖЕ ГОТОВЫ создавать более сложные проекты. Руководство раскрывает ПРИНЦИПИАЛЬНУЮ СХЕМУ работы отдельных игровых механик, в частности базовые ПРИНЦИПЫ РАБОТЫ СО ВРЕМЕНЕМ. Если в процессе изучения представленного материала ваших базовых знаний окажется не достаточно, советуем изучить основы прежде чем продолжать - обучать вас "как создавать кнопки" в этом руководстве мы не будем.

Несмотря на то что пособие рассчитано на подготовленных админов, для упрощения начального понимания приведённых схем - они приведены В САМОМ БАЗОВОМ СВОЁМ ВИДЕ. В дальнейшем, поняв принципы их работы, вы сможете усложнять их по мере необходимости - подобный подход позволит вам САМИ сформировать ПРАВИЛЬНЫЕ ПРИНЦИПЫ РАБОТЫ с новым функционалом и знаниями - даст понять, что НЕ НУЖНО БЕЗДУМНО КОПИРОВАТЬ приведённые подходы (а потом приходить в поддержку и говорить что ничего не работает и вы ничего не понимаете) - нужно понять их принцип на простых примерах и затем по мере роста понимания переходить к более сложным вариантам применения.

Список необходимых навыков:

Создание Кнопок и Сообщений
Переменные
Макросы
Баланс в боте
Условия
Action-ы
Выражения
Работа с Датой и Временем

❖ Принципиальная схема механики инвеста в боте

В данной схеме:
• Юзер инвестирует фиксированную сумму (заданную админом) и получает фиксированную прибыль в час.
• Юзер может проверить накопленный объём.
• Юзер может забрать (вывести) прибыль на основной Баланс.
• Юзер может РЕинвестировать накопленное для увеличения прибыли в час.
• Юзер может вывести всю сумму накопленных средства и завершить процесс инвестирования.

Подготовительные действия

На данном этапе мы подготавливаем функционал нашего бота для создания игровых механик.

● Числовая переменная «balance» у вас уже есть - там хранятся внутриигровые средства юзера.

● Создайте Числовую переменную «inv_balance» - в ней будет хранится сумма инвеста.

● Создайте переменную Даты и Времени «inv_start» - в ней будет хранится время начала инвеста.

Механизм инвестирования

Кнопка инвестирования - позволяет юзеру списать средства с его внутриигрового Баланса на отдельный Баланс инвеста и запустить процесс накопления средств.

● Создайте кнопку «Инвестировать» с Условием «{%inv_balance% == 0}» и сообщением ошибки «Вы уже инвестировали».

● Добавьте «Action Чисел» (списываем средства с баланса - 10 условных монет)
Переменная для изменения: balance
Тип операции: Изменить Значение
Значение: -10 (минус десять)
Условие: {%balance% >= 10}
Сообщение о Неудаче: «Недостаточно средств»
Сообщение об Успехе: не обязательно

● Добавьте «Action Чисел» (зачисляем средства на инвест)
Переменная для изменения: inv_balance
Тип операции: Задать Значение
Значение: 10 (десять)
Условие: нет
Сообщение о Неудаче: нет
Сообщение об Успехе: не обязательно

● Добавьте «Action Чисел» (устанавливаем время начала инвета)
Переменная для изменения: inv_start
Тип операции: Задать Значение
Значение: {dt_now()} (время "сейчас")
Условие: нет
Сообщение о Неудаче: нет
Сообщение об Успехе: не обязательно

● Добавьте Сообщение кнопке: «Поздравляем вы инвестировали %inv_balance% монет!».

Проверка объёма накопленных средств

Кнопка проверки - позволит юзеру узнать статус инвестирования (активен или нет), а также основные параметры инвеста (дату начала, сумму инвеста, продолжительность, объем накопленных средств) - если инвест активен. 

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

● Создайте кнопку «Проверить» с Условием «{%inv_balance% != 0}» и сообщением ошибки «Вы ещё не инвестировали».

● Добавьте Сообщение кнопке:

Данные инвеста
Начат: %inv_start%.
Инвестировано: %inv_balance% монет.
Продолжительность: {dt_passed_hm("%inv_start%")} часов.
Прибыль: {round(%inv_balance% * 0.1 * dt_passed("%inv_start%")/24,2)} монет.

Надо понимать что ФАКТИЧЕСКОГО ИЗМЕНЕНИЯ ДАННЫХ ПЕРЕМЕННОЙ НЕ ПРОИСХОДИТ. В сообщении, зная сумму инвеста и объём прибыли в час, мы каждый раз рассчитываем накопленную прибыль, отсчитывая её В ЧАСАХ от даты начала инвеста, Технически - сумму инвеста мы умножаем на процент в час (выраженный дробным числом) и умножаем на количество прошедших часов (так же выраженное дробным числом).

Не будем отдельно пояснять, что если вы освоили базовый принцип расчёта накопленной прибыли по времени, то выражать накопления вы можете не только через ЧАСЫ, но и через ДНИ, указывая процент в день, а не в час. Кроме того вы также будете иметь возможность задавать свой собственный процент.

Сбор прибыли и продолжение инвеста

Кнопка сбора прибыли - позволит юзеру вывести накопленную прибыль на основной Баланс, не трогая первоначальную сумму инвестирования.

● Создайте кнопку «Забрать прибыль» с Условием «{%inv_balance% != 0}» и сообщением ошибки «Вы ещё не инвестировали».

● Добавьте «Action Чисел» (выводим накопленное на основной баланс)
Переменная для изменения: balance
Тип операции: Изменить Значение
Значение: {round(%inv_balance% * 0.1 * dt_passed("%inv_start%")/24,2)}
Условие: нет
Сообщение о Неудаче: нет
Сообщение об Успехе: не обязательно

● Добавьте «Action Чисел» (устанавливаем новое время начала инвета)
Переменная для изменения: inv_start
Тип операции: Задать Значение
Значение: {dt_now()} (время "сейчас")
Условие: нет
Сообщение о Неудаче: нет
Сообщение об Успехе: не обязательно

● Добавьте Сообщение кнопке: «Инвест продолжен - сумма %inv_balance% монет!».

Сбор прибыли и её автоматический реинвест

Кнопка автоматического реинвеста - позволит юзеру зафиксировать прибыль и сразу же добавить её в полном объёме на баланс инвеста с целью получения большей прибыли в единицу времени.

● Создайте кнопку «Реинвестировать» с Условием «{%inv_balance% != 0}» и сообщением ошибки «Вы ещё не инвестировали».

● Добавьте «Action Чисел» (зачисляем накопленные средства на инвест)
Переменная для изменения: inv_balance
Тип операции: Задать Значение
Значение: {%inv_balance% + round(%inv_balance% * 0.1 * dt_passed("%inv_start%")/24,2)}
Условие: нет
Сообщение о Неудаче: нет
Сообщение об Успехе: не обязательно

● Добавьте «Action Чисел» (устанавливаем новое время начала инвета)
Переменная для изменения: inv_start
Тип операции: Задать Значение
Значение: {dt_now()} (время "сейчас")
Условие: нет
Сообщение о Неудаче: нет
Сообщение об Успехе: не обязательно

● Добавьте Сообщение кнопке: «Поздравляем вы инвестировали %inv_balance% монет!».

Сбор прибыли и завершение инвеста

Кнопка завершения инвеста позволяет юзеру зафиксировать прибыль и забрать основное тело инвеста - переведя их общую сумму на основной Баланс.

● Создайте кнопку «Завершить Инвест» с Условием «{%inv_balance% != 0}» и сообщением ошибки «Вы ещё не инвестировали».

● Добавьте «Action Чисел» (выводим накопленное на основной баланс)
Переменная для изменения: balance
Тип операции: Изменить Значение
Значение: {%inv_balance% + round(%inv_balance% * 0.1 * dt_passed("%inv_start%")/24,2)}
Условие: нет
Сообщение о Неудаче: нет
Сообщение об Успехе: не обязательно

● Добавьте «Action Чисел» (обнуляем баланс инвеста)
Переменная для изменения: inv_balance
Тип операции: Задать Значение
Значение: 0 (ноль)
Условие: нет
Сообщение о Неудаче: нет
Сообщение об Успехе: не обязательно

● Добавьте Сообщение кнопке: «Инвест завершён».

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

❖ Варианты улучшения базовой механики

Позволить юзеру самому указывать сумму инвеста

Для того чтобы задавать первоначальную сумму инвеста, можно использовать не фиксированное (заданное Адимном) число, а данные из Переменной (нужно создать отдельно). Юзер при помощи «Формы с Вводом Переменной» указывает сумму которую он хочет инвестировать. После чего проверка в Action-е инвестирования происходит не по заданному числу как в базовой механике, а по Макросу переменной.