Как настроить внутренний баланс в Telegram-боте: начисление за активность, списание и ручное пополнение
В Telegram-ботах часто нужно не просто отправлять сообщения, а выстраивать механику, которая будет мотивировать пользователей действовать: подписываться, выполнять задания, возвращаться. Один из самых удобных способов — вести внутренний баланс, начисляя его за активность и предлагая тратить на полезные продукты: гайд, урок или другой формат.
Такую механику можно добавлять в разные боты: для квизов, марафонов, подписных воронок, онлайн-школ, экспертных проектов и других форматов. В этой статье поделюсь, как настроить:
- автоматическое начисление баланса за действия (например, за подписку и анкету);
- отображение баланса в личном кабинете;
- кнопку для получения награды, которая скрыта, если баланса недостаточно;
- списание с баланса при получении продукта;
- ручное пополнение баланса админом.
Привет! Меня зовут Светлана. Больше года я создаю чат-ботов и веду Telegram-канал «Чат-боты для экспертов и бизнеса», где делюсь опытом, полезными механиками и кейсами с реальных запусков.
Механика бота
Для наглядности разберём механику на примере готового чат-бота — тестировать в Telegram.
Бот запускается с команды /start, после чего отправляется приветствие и по кнопке открывается личный кабинет пользователя. В нём отображается:
- текущий баланс;
- список действий, за которые можно получить внутренние единицы (ye);
- доступные продукты (если хватает баланса);
- информация о том, как ещё можно заработать;
Пользователь получает единицы (ye) за подписку и анкету по одному разу. После накопления нужной суммы он может обменять её на продукт — гайд и/или урок. При этом:
- баланс списывается;
- присваивается категория (например, «получил(а) гайд»);
- кнопка меняется, повторная покупка исключена.
У админа есть дополнительная кнопка для ручного начисления баланса пользователю.
Отображение кнопок и доступов построено на кнопках-условиях с категориями и переменными. Теперь рассмотрим, как реализовать такую механику в PuzzleBot — от переменных до команд и условий.
Настройка: шаг за шагом
Настройка будет проводиться в боте, разработанном на платформе PuzzleBot.
Чтобы создать бота и зарегистрироваться на платформе, воспользуйтесь инструкцией.
Создание переменных
Для работы понадобится две переменные:
- balans - персональная переменная для внутреннего баланса пользователя
- balans_gl - глобальная переменная для ручного начисления баланса
Настройка персональной переменной
- Откройте раздел Переменные и нажмите + Добавить переменную.
- Заполните поля:
▪ Тип переменной - персональная
▪ Название переменной — например, balans (латиницей, без пробелов)▪ Тип значения — обычная
▪ Формат значения — число▪ Значение по умолчанию — 0
▪ Описание — комментарий для удобства Сохраните настройку.
Теперь у каждого пользователя будет собственный баланс, с которым мы будем работать в следующих шагах.
Настройка глобальной переменной
- Откройте раздел Переменные и нажмите +Добавить переменную.
- Заполните поля:
▪ Тип переменной - глобальная
▪ Название переменной — например, balans_gl (латиницей, без пробелов)▪ Тип значения — обычная
▪ Формат значения — число▪ Значение по умолчанию — 0
▪ Описание — комментарий для удобства Сохраните настройку.
Теперь можно будет через админскую кнопку передавать значение из глобальной переменной в пользовательскую — об этом будет отдельный шаг.
Создание категорий
Категории в PuzzleBot помогают сегментировать пользователей, а также могут использоваться в логике: для доступа к группе команд, отдельных сценариев или отображения/скрытия кнопок.
Для настройки системы с внутренним балансом создадим следующие категории:
- Получил(а) баланс за подписку
- Получил(а) баланс за анкету
- Получил(а) доступ к гайду
- Получил(а) доступ к уроку
- Права для начисления ye — отдельная категория для админа, которая даст доступ к ручному начислению баланса пользователю
Как создать категорию
- Откройте раздел Модерация и нажмите +
- В появившемся поле введите название категории и нажмите Создать категорию
Настройка команд
Настроим команды для логики начисления, списания и выдачи продукта.
Сценарий: начисление баланса за подписку на канал или группу
Пользователь получает начисление на внутренний баланс (ye), если подписался на Telegram-канал. Чтобы реализовать механику, потребуется:
- Кнопка-условие — отображается в личном кабинете, если пользователь ещё не получил начисление за подписку (т.е. у него нет категории «Получил(а) баланс за подписку»);
- Условие — проверяет наличие подписки:
▪ если подписка есть — начисляет баланс, присваивает категорию, отправляет сообщение об успешном начислении;
▪ если подписки нет — отправляет команду с напоминанием подписаться;
- Инлайн команда 1 — промежуточная, отображает условие и по кнопке направляет в нужную ветку;
- Инлайн команда 2 — сообщение, если подписка есть (открывается через условие);
- Инлайн команда 3 — сообщение, если подписки нет.
⚙ После успешного начисления баланс обновляется, присваивается категория, а кнопка "Получить 150 ye за подписку" исчезает из личного кабинета.
Сценарий: начисление баланса за заполнение анкеты
Механика начисления баланса за заполнение анкеты настраивается по аналогии с подпиской, но с меньшим количеством команд:
- Кнопка-условие — отображается, если пользователь ещё не заполнил анкету и не получил за это начисление (нет категории);
- Команда (обычная или мини-приложением) — открывает анкету для пользователя.
- Инлайн команда — отправляется при заполнение анкеты, начисляет баланс и присваивает категорию.
Что использовать для анкеты:
- Если вопросов немного, можно использовать обычную команду с блоком "Форма ввода".
- Если вопросов много, лучше использовать мини-приложение — пользователю будет удобно видеть все вопросы сразу и отвечать последовательно.
Рекомендации:
- Отметьте как обязательные те вопросы, которые действительно нужны (или все — если важно получить полную информацию).
Сценарий: списание баланса и получение доступа к продукту
Когда пользователь накопил достаточно ye, он может получить доступ к продукту: гайду, уроку или консультации. При получении:
- с баланса списывается нужная сумма;
- присваивается категория, благодаря которой:
▪ кнопка в личном кабинете меняется с «Получить гайд за 150 ye» на «Гайд» (аналогично для других продуктов).
▪ повторная покупка становится невозможна.
Что потребуется для настройки:
- Кнопка-условие — отображается в зависимости от состояния:
▪ если у пользователя уже есть категория — кнопка отображается как постоянная (например, «Гайд») и ведёт на материал;
▪ если категории нет, но баланса хватает — отображается кнопка «Получить гайд за 150 ye», ведущая на команду со списанием и выдачей;
▪ если баланса недостаточно — кнопка не отображается вовсе. Инлайн команда — отвечает только за выдачу продукта: отправляет нужный материал или сообщение.
⚙ Такая логика позволяет:
- отображать пользователю только те кнопки, которые соответствуют его текущему балансу и статусу продукта;
автоматически обновлять интерфейс после получения продукта.
Сценарий: ручное начисление баланса админом
Иногда нужно вручную добавить пользователю ye — например, если он выполнил задание вне сценария, участвовал в активности или получил бонус. Такой функционал можно реализовать через кнопку, доступную только администратору.
Для этого используется:
- глобальная переменная balans_gl — создана на этапе настройки переменных;
- категория «Права для начисления ye» — создана на этапе настройки категорий, используется для ограничения доступа.
- кнопка-условие —для отображения кнопки только у админа
- обычная команда — содержит 3 блока:
▪ форма для выбора суммы и указания username или user_id пользователя;
▪ текстовый блок с кнопками «Да» и «Нет» для подтверждения; - обычная команда — отправляет выбранному пользователю инлайн-команду с начислением и уведомлением.
Личный кабинет
Личный кабинет — это инлайн-команда в которой пользователь:
- видит текущий баланс;
- получает информацию, за что можно заработать ye;
- видит продукты, которые может приобрести;
- может перейти к получению наград (если доступно).
Настройка команды Личный кабинет
Сценарии начисления, списания и ручного пополнения уже готовы — осталось собрать личный кабинет и связать всё воедино.
- Откройте раздел Конструктор, нажмите + и добавьте Инлайн команду
- Выберите блок Текст и добавьте текст с информацией
- Добавьте инлайн клавиатуру и создайте кнопки:
▪ Как заработать ye — можно использовать попап или вывести отдельной командой▪ Получить 150 ye за подписку — кнопка-условие
▪ Получить 300 ye за анкету — кнопка-условие
▪ Доступ к гайду — кнопка-условие
▪ Доступ к уроку — кнопка-условие
▪ Доступ к консультации — кнопка-условие
▪ Доступ к ручному начислению — кнопка-условие (отображение только для админов)
Вывод
Теперь вы сможете самостоятельно настроить внутренний баланс в чат-боте на платформе PuzzleBot: начислять ye за активность, списывать при получении продукта и вручную управлять балансом через админскую панель.
📌 Чтобы посмотреть, как всё работает вживую — протестируйте механику на примере готового бота
Спасибо, что дочитали статью до конца, надеюсь она была полезной.
Если вам нужен Telegram-бот — пишите мне в Telegram, обсудим задачи и подберём оптимальное решение. А если хотите больше разборов механик и кейсов с реальных запусков — подписывайтесь на мой канал «Чат-боты для экспертов и бизнеса».