Skip to content

Промокоды и gift-коды

Один движок промокодов обслуживает три входа: кнопку «🎟 Промокод» в боте, кнопку «У меня промокод» на экране оплаты и gift-диплинки ?start=gift_. Награда применяется мгновенно, активация — уникальная на пользователя.

Типы наград

ТипЧто даётУсловие
balanceпополняет баланс на сумму промокода
personal_discountперсональная скидка N% — действует на все покупки, пока её не сменят
purchase_discountскидка N% на следующую покупку, одноразовая
promo_groupдобавляет юзера в промо-группу со своими скидками
duration+N дней к текущей подписке (продление на панели)нужна активная подписка
subscriptionбесплатные N дней: продлевает подписку, а если её нет — выдаёт новую бесплатную

Награда subscription выдаётся тем же путём, что и триал (panel-first, снапшот заморожен), но пользователь при этом не помечается как платящий. В кабинете при создании промокода доступны четыре типа: баланс / дни / trial-подписка / промо-группа; скидочные промокоды переезжают при миграции с других ботов.

Ограничения промокода

  • expires_at — срок действия;
  • max_activations — общий лимит активаций (пусто = безлимит);
  • одна активация на пользователя — повторный ввод того же кода отбивается;
  • availability — кому доступен: всем / только новым (без платной подписки в истории) / только действующим клиентам / только приглашённым по рефералке.

Коды хранятся в верхнем регистре — бот сам приводит ввод к uppercase, регистр при вводе не важен.

Ввод в боте и на экране оплаты

Кнопка «🎟 Промокод» (личный кабинет бота или своя кнопка в конструкторе меню) — код одним сообщением, бонус начисляется сразу.

Второй вход — экран выбора способа оплаты: кнопка «🎟 У меня промокод». Она показывается только когда к цене ещё не применена скидка; после активации кода цена на экране пересчитывается. Подробнее про флоу покупки — /bot/purchase.

Скидки: one-shot против персональной

purchase_discount сгорает при любой платной покупке — новой подписке, продлении, смене тарифа и даже докупке трафика (цена которой им тоже снижается). personal_discount живёт на пользователе постоянно.

Итоговая скидка складывается: промо-группа + персональная + одноразовая + активная распродажа, и капается на 100%.

Скидка 100% = бесплатно

Если итоговая цена обнулилась, покупка идёт по free-path — подписка выдаётся сразу, минуя платёжный шлюз.

Gift-коды: ?start=gift_

Gift-код — обычный промокод, активируемый диплинком: https://t.me/<бот>?start=gift_<КОД>. Человек жмёт ссылку, бот применяет код прямо на /start и отвечает «🎁 Подарок активирован!». Работают все те же проверки: срок, лимит, одна активация на юзера — истёкший или чужой уже активированный код вернёт понятную ошибку.

Масс-генерация с CSV

В кабинете (Акции и промокоды → «🎁 Пачка gift-кодов») генерируется до 1000 кодов за раз: указываете количество и сколько дней подписки дарит каждый код. Каждый код создаётся строго одноразовым (max_activations = 1), с префиксом GIFT-, и сразу скачивается CSV с колонками code, gift_link — готовые диплинки для раздачи в рассылке, на стриме или партнёру.

Многоразовые кампанейские коды с явным лимитом активаций создаются по одному там же — см. /cabinet/promos.

MIT License · сделано для тех, кто продаёт VPN, а не настраивает ботов