This commit is contained in:
2026-07-09 16:45:17 +03:00
parent 5c7a9710f3
commit da24ed8ba7
23 changed files with 1542 additions and 358 deletions

View File

@@ -11,7 +11,7 @@ Telegram-бот на `aiogram 3` с интеграцией в `Remnawave API`,
- Хранит локальный кэш пользователей и истории подписок в MariaDB
- Поддерживает привязку существующего аккаунта Remnawave по `short_uuid`
- Показывает профиль, статус подписки, срок и трафик
- Работает с реферальными кодами, промокодами и скидкой перед оплатой
- Работает с реферальными кодами и скидкой перед оплатой
- Поддерживает ручную оплату переводом с отправкой чека в бот
- Отправляет чек в отдельный Telegram-канал/топик на проверку
- Даёт админу или модератору подтвердить или отклонить оплату
@@ -24,8 +24,8 @@ Telegram-бот на `aiogram 3` с интеграцией в `Remnawave API`,
Сейчас в проекте не используется Telegram Stars. Оплата работает вручную:
1. Пользователь нажимает `Купить подписку`
2. Бот показывает список тарифов из `PAYMENT_PRODUCT_PLANS`, если они заданы, иначе из `PAYMENT_PLANS`
3. Если у пользователя применён реферальный код или промокод, скидка учитывается до выбора тарифа
2. Бот показывает список тарифов из `PAYMENT_PLANS`
3. Если у пользователя применён реферальный код, скидка учитывается до выбора тарифа
4. После выбора тарифа бот показывает реквизиты из `PAYMENT_TRANSFER_TEXT`
5. Пользователь отправляет чек следующим сообщением в бота
6. Бот пересылает чек в review-чат оплаты
@@ -34,7 +34,7 @@ Telegram-бот на `aiogram 3` с интеграцией в `Remnawave API`,
### Тарифы
Обычные тарифы по срокам задаются одной переменной:
Тарифы задаются одной переменной:
```env
PAYMENT_PLANS=30:250,180:600,365:1000
@@ -51,22 +51,6 @@ PAYMENT_PLANS=30:250,180:600,365:1000
- 180 дней = 600 ₽
- 365 дней = 1000 ₽
Для разных типов подписки можно включить продуктовые тарифы:
```env
PAYMENT_PRODUCT_PLANS=vpn_white:30:450,white:30:250,vpn:30:200
PAYMENT_VPN_SQUAD_UUIDS=11111111-1111-1111-1111-111111111111
PAYMENT_WHITE_SQUAD_UUIDS=22222222-2222-2222-2222-222222222222
```
Если `PAYMENT_PRODUCT_PLANS` заполнен, пользователь увидит выбор:
- `VPN + Белые списки` — получает UUID из `PAYMENT_VPN_SQUAD_UUIDS` и `PAYMENT_WHITE_SQUAD_UUIDS`
- `Белые списки` — получает только `PAYMENT_WHITE_SQUAD_UUIDS`
- `VPN` — получает только `PAYMENT_VPN_SQUAD_UUIDS`
Формат `PAYMENT_PRODUCT_PLANS`: `код:дни:цена_в_рублях`. Доступные коды: `vpn_white`, `white`, `vpn`. Эти значения также можно менять в админ-настройках бота.
### Логин в Remnawave
Логин создаётся в формате:
@@ -253,12 +237,6 @@ telegabot/
- `referral_bonuses`
- начисленные и ожидающие применения бонусы реферерам
- `promo_codes`
- промокоды, скидка, срок действия и ограничение по тарифу
- `promo_code_applications`
- активный промокод, который пользователь ввёл перед оплатой
- `payment_orders`
- ручные платежи, статусы и выданные доступы
@@ -283,26 +261,6 @@ telegabot/
- за каждую подтверждённую оплату по рефкоду реферер получает бонус в днях
- размер бонуса задаётся в `REFERRAL_BONUS_DAYS`
### Промокоды
Админ может создать промокод из UI: `Админ-панель` -> `Промокоды` -> `Создать промокод`.
Сценарий создания:
1. Админ вводит слово промокода
2. Выбирает область действия: все тарифы или один тариф
3. Вводит процент скидки
4. Вводит срок действия
Пользователь вводит промокод в том же разделе, где вводится реферальный код. Если промокод ограничен одним тарифом, скидка применяется только к этому тарифу. Если у пользователя есть и реферальное приглашение, и активный промокод, при оплате используется скидка промокода; реферальный бонус рефереру всё равно начислится после подтверждённой оплаты.
Форматы срока действия:
- `7` — 7 дней
- `24h` или `24ч` — 24 часа
- `2026-05-31` — до конца указанной даты
- `0` — без срока действия
## Тикеты поддержки
Сценарий:
@@ -373,11 +331,10 @@ DB_NAME=oreolvpn
DB_USER=oreolvpn
DB_PASSWORD=strong_password
PAYMENT_PRODUCT_PLANS=vpn_white:30:450,white:30:250,vpn:30:200
PAYMENT_PLANS=30:250,180:600,365:1000
PAYMENT_TRANSFER_TEXT=Карта 0000 0000 0000 0000; банк OREOL; получатель OREOL VPN
PAYMENT_REVIEW_LINK=https://t.me/c/3646494169/56/57
PAYMENT_VPN_SQUAD_UUIDS=11111111-1111-1111-1111-111111111111
PAYMENT_WHITE_SQUAD_UUIDS=22222222-2222-2222-2222-222222222222
PAYMENT_INTERNAL_SQUAD_UUIDS=11111111-1111-1111-1111-111111111111
REFERRAL_DISCOUNT_PERCENT=5
PAYMENT_USERNAME_PREFIX=Oreol
```
@@ -853,7 +810,7 @@ OperationalError: (1049, "Unknown database '...'" )
6. Проверить руками:
- `/start`
- открытие раздела подписки через кнопку в панели
- ввод реферального кода или промокода
- ввод реферального кода
- отправку чека
- подтверждение оплаты модератором
- выдачу ссылки пользователю