HELPER Discord Bot
К списку Wiki
LICENSE CORE // OWNER ONLY // ACCESS CONTROL

HELPER LICENSING КЛЮЧИ И ДОСТУП /ACTIVATE / LICENSE STATUS / OWNER PANEL / BOOSTY ROLE CLAIM

Licensing превращает HELPER в коммерческий продукт: владелец создаёт ключи Base / Premium / Ultra, клиент активирует ключ на своём сервере, а бот ведёт подписку, срок действия, blacklist, audit history, Boosty-выдачу и owner-only панель управления продажами.

3Base / Premium / Ultra
500bulk keys limit
6hlicense checker
WALsqlite transaction
KeysHLPR-PREM-XXXX-XXXX-XXXX
SQLitekeys / used_keys / subscriptions
Ownerпанель доступна только владельцу
Boostyроль выдаёт ключ через claim
Logsактивации и события в owner-log

Что делает Licensing

Это закрытый owner-only модуль продажи доступа к HELPER. Он создаёт ключи, активирует подписки на серверы, не даёт активировать ключи blacklist-пользователям и blacklist-серверам, ведёт историю использованных ключей, предупреждает об истечении срока и помогает автоматизировать выдачу ключей через Boosty.

01

Ключи

Base, Premium и Ultra с заданным сроком, комментарием и создателем.

02

Активация

Клиент вводит /activate, ключ переносится из stock в used_keys.

03

Подписка

В subscriptions хранится tier, expires_at, owner_id и предупреждения.

04

Контроль

Owner видит audit, меняет сроки, блокирует цели и делает broadcast.

Больше информации картинками

Ниже показан весь путь: получение ключа, активация, status, owner panel, bulk generation, audit, blacklist, Boosty claim и предупреждение об истечении.

01 / client keyКлиент получает ключ
🔑
private messageВаш ключ HELPER

🎁 Ключ активации

Пакет: Premium · Срок: 30 дней · Использовать можно один раз.

HLPR-PREM-9F2A-K7QX-M2LA
Скопировать и ввести /activate
02 / activation/activate
server commandLICENSE CONNECTED

✅ ЛИЦЕНЗИЯ HELPER АКТИВИРОВАНА

Публичная запись активации лицензии на сервере. Ключ уже нельзя использовать повторно.

ACTIVATION CARD 1120×420
СерверFamily RP
ПакетPremium
Срок30 дней
Активировал@Owner
03 / status/license_status
💳
server statusСтатус лицензии

💳 Статус лицензии Helper

Владелец сервера видит текущий пакет, активность и дату окончания.

ТирUltra
Активна🟢 Да
Действует дочерез 30 дней
04 / owner panelOwner command center
🛡️
owner onlyHELPER OWNER COMMAND CENTER

🛡️ PRIVATE LICENSE PANEL

Кнопки доступны только владельцу бота. Клиент не может создать ключи или посмотреть аудит.

Создать ключ
Массово
Аудит
Срок
Blacklist
Рассылка
05 / boosty claimBoosty claim
🎁
role rewardТвой ключ активации

🎁 ТВОЙ КЛЮЧ АКТИВАЦИИ

Пользователь с Boosty-ролью нажимает кнопку и получает ключ в личные сообщения.

🔑 Забрать мой ключ
06 / blockedBlacklist / expired

❌ Доступ заблокирован

Если сервер или пользователь в blacklist, активация останавливается. Если срок закончился — владелец получает уведомление.

ACCESS DENIED / EXPIRED

Команды Discord

Клиентские команды отделены от owner-команд. Клиент активирует и проверяет подписку, владелец управляет продажами.

client command/activate
/activate key:HLPR-PREM-9F2A-K7QX-M2LA

Активирует ключ на текущем сервере, обновляет subscriptions и переносит ключ в used_keys.

client command/license_status
/license_status

Показывает текущий статус лицензии сервера: тир, активность, срок и owner_id.

owner command/admin_panel_init
/admin_panel_init channel:#private-owner-panel

Создаёт приватную owner-панель с кнопками генерации ключей, bulk, audit, blacklist и настроек.

owner toolsPanel buttons
GenerateKeyModal BulkKeyModal AuditModal EditTimeModal BlacklistModal BroadcastModal ConfigModal

Основная работа владельца идёт кнопками и modal-окнами, а не отдельными ручными командами.

Путь клиента от покупки до доступа

1Buy

пакет

2Key

HLPR-...

3Activate

/activate

4Sub

subscription

5Card

PNG + embed

6Access

modules

A

Ключ не тратится зря

Blacklist и проверки проходят до успешной активации, чтобы не сжечь ключ в плохом сценарии.

B

Сервер запоминается

Подписка привязана к guild_id, tier, expires_at и owner_id.

C

Owner-log

Владелец видит, кто активировал ключ, на каком сервере и какой пакет куплен.

Owner-панель управления продажами

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

panel uiКнопки панели
owner onlypersistent view
🔑 Создать ключодин ключ через modal
key
📦 МассовоTXT-файл до 500 ключей
bulk
🔎 Аудитключ или сервер
audit
⏳ Срокдобавить или снять дни
time
⛔ Blacklistзаблокировать user/guild
deny
📢 Рассылкасообщение активным клиентам
broadcast
generate modalСоздание ключа
🔑
GenerateKeyModalСоздать ключ лицензии

Поля modal

Тир: Base / Premium / Ultra
Срок в днях: 30
Комментарий: ручная продажа
HLPR-PREM-XXXX-XXXX-XXXX
bulk modalМассовая генерация

📦 Bulk keys

Owner вводит tier, days, count. Бот отдаёт TXT-файл с пачкой ключей.

helper_keys_Premium_10.txt
HELPER KEYS TIER=Premium DAYS=30 COUNT=10 HLPR-PREM-A1B2-C3D4-E5F6 HLPR-PREM-Q7W8-E9R0-T1Y2
auditАудит ключа / сервера

📊 Аудит сервера

Показывает текущую подписку и последние активации. Если запрос — ключ, показывает stock или used-state.

Текущая лицензияPremium, active, expires_at
Последние активацииkey, tier, days, activated_by

Boosty авто-выдача ключей

Когда пользователю дают Boosty-роль, бот сверяет её с картой ролей, создаёт ключ нужного tier/days, записывает boosty_role_state и отправляет claim-кнопку. Если роль снимается, неиспользованный ключ можно отозвать.

1Role

выдали роль

2Map

tier/days

3Key

generated

4Claim

button

5DM

key

6History

boosty log

role mapDEFAULT_ROLE_MAP
Base role10 дней доступа.
Premium role30 дней доступа.
Ultra role9999 дней доступа.
BOOSTY_ROLE_MAP_JSONможно заменить карту через ENV.
claim viewClaimKeyView

🎁 ТВОЙ КЛЮЧ АКТИВАЦИИ

Кнопка работает только для target_user_id, имеет cooldown и проверяет, что ключ ещё доступен.

🔑 Забрать мой ключ

Renew / Upgrade и защита от понижения

NEW

Новая подписка

У сервера не было активного доступа. Ключ создаёт новую subscription.

REN

Продление

Если tier совпадает, срок увеличивается, а уровень остаётся прежним.

UP

Upgrade

Если куплен tier выше текущего, активный уровень повышается.

SAFE

Без понижения

Если сервер Ultra, а купили Base, срок продлевается, но tier не падает.

mode textЧто пишет бот
new✅ Новая подписка активирована.
renew🔁 Подписка продлена.
upgrade⬆️ Подписка повышена.
extend_higher🛡️ Продление без понижения.
tier ranksИерархия пакетов
tier rank
Baserank 1
basic
Premiumrank 2
middle
Ultrarank 3
max

Activation Card

GraphicsEngine рисует отдельную картинку активации 1120×420: фон, glow, grid, иконку сервера, tier, статус и режим активации.

activation cardPremium connected
LICENSE ACTIVATED
PREMIUM • 30 DAYS
FAMILY RP SERVER
ACCESS CONNECTED
tier themesЦвета пакетов
Baseсиний / cyan стиль.
Premiumзолотой / yellow стиль.
Ultraфиолетовый / violet стиль.
extend_higherособая подпись: куплен ниже, сохранён выше.

Защита и контроль

👑

Owner-only

Панель и modal-окна проверяют is_owner_user перед действием.

Blacklist

Можно блокировать guild или user, чтобы ключи не активировались.

🔒

Transaction

Ключ переносится атомарно: stock → used_keys → subscription.

📣

Logs

Активации, истечения, Boosty и аудит уходят в owner-log канал.

Почему это owner-only

Эта Wiki может быть публичной как описание продукта, но реальные команды генерации ключей, blacklist, audit и broadcast должны быть доступны только владельцу бота.

Что хранится в базе

sqlitelicenses.db
🔑
keysключи на складе
used_keysактивации
💳
subscriptionsдоступ серверов
blacklistблокировки
⚙️
configлог и баннер
🎁
boosty_role_stateроль → ключ
subscription fieldssubscriptions
guild_idсервер клиента.
tierBase / Premium / Ultra.
expires_atдата окончания доступа.
warned_3d / warned_1dфлаги предупреждений.
owner_idвладелец сервера для уведомлений.

Что нужно настроить

environmentENV / constants
OWNER_GUILD_IDсервер владельца / служебный сервер.
OWNER_IDSID владельцев, которым доступна панель.
ADMIN_LOG_CHANNEL_IDкуда отправлять owner-log.
ADMIN_BANNERбаннер owner-панели и лицензий.
BOOSTY_ROLE_MAP_JSONпереопределение ролей Base/Premium/Ultra.
default mapПакеты Boosty
default role map
Base10 дней
role
Premium30 дней
role
Ultra9999 дней
role

Карта технической логики

filesФайлы модуля
DB_PATH

data/licenses.db — основная SQLite-база лицензий.

cog.py

LicensingCog, /activate, /license_status, owner logs и license_checker.

database.py

LicenseDB, таблицы, генерация ключей и активация.

graphics.py

GraphicsEngine рисует activation card 1120×420.

views.py / modals.py

Owner-панель, claim key view и modal-окна управления.

limitsЛимиты и константы
📦
MAX_BULK_KEYS500 ключей
⏱️
LICENSE_CHECK6 часов
🎁
CLAIM_TIMEOUT86400 сек
💎
VALID_TIERS3 пакета
🧾
MAX_DAYS36500
🔒
WALSQLite mode
activation logicЧто делает activate
sanitize_license_keyнормализует ключ.
is_blacklistedпроверяет guild/user blacklist.
activate_keyтранзакционно обновляет ключ и подписку.
build_activation_admin_embedсоздаёт embed с mode_text.
create_activation_cardрисует PNG-карточку лицензии.
checkerФоновая проверка
license_checkerкаждые 6 часов читает subscriptions.
warned_3dпредупреждение за 3 дня.
warned_1dпредупреждение за 1 день и expired-state.
owner lookupпытается найти owner по guild или owner_id.

Ошибки и решения

Клиент пишет, что ключ не работает

Проверьте audit по ключу: он может быть уже использован, отозван после Boosty или введён с ошибкой.

Сервер не получил доступ после активации

Проверьте subscriptions по guild_id, expires_at и blacklist. Для доступа важен active subscription.

Панель не нажимается

AdminControlView доступна только владельцу бота. Проверьте OWNER_IDS или bot.is_owner.

Bulk не создаёт ключи

Количество должно быть числом от 1 до 500. При ошибке уникальности смотрите логи генерации.

Boosty ключ не пришёл в ЛС

Пользователь мог закрыть личные сообщения. ClaimKeyView вернёт понятное сообщение об ошибке.

Срок закончился, но запись осталась

Это нормально: запись subscriptions не удаляется сразу, чтобы сайт мог отличить “истекла” от “нет подписки”.

// WIKI_NAVIGATION

Вернуться к списку Wiki

Ты дошёл до конца страницы Licensing. Можно вернуться в общий центр документации, открыть Dashboard или подняться наверх к началу этой страницы.