Commit Graph

273 Commits

Author SHA1 Message Date
Egor
7d9d1b0a6f Update inline.py 2026-02-01 17:16:28 +03:00
gy9vin
1ae6ea18b7 Merge branch 'main' of https://github.com/Gy9vin/remnawave-bedolaga-telegram-bot 2026-02-01 11:18:59 +03:00
gy9vin
bea6c02d89 kassa ai 2026-02-01 11:18:54 +03:00
Mikhail
153083d791 Merge branch 'main' into main 2026-02-01 11:11:23 +03:00
Egor
1bb5ef85aa Update inline.py 2026-01-31 17:04:59 +03:00
gy9vin
b8d0e6eefb Новый фильтр и кричиеский баг
Теперь при подписке на канал:
  -  Обычные пользователи — подписка реактивируется
  - 🚫 Заблокированные — пропуск с логом, подписка НЕ активируется
2026-01-30 23:40:46 +03:00
gy9vin
95b7152c05 касса и прочее 2026-01-27 23:47:39 +03:00
c0mrade
9a2aea038a chore: add uv package manager and ruff linter configuration
- Add pyproject.toml with uv and ruff configuration
- Pin Python version to 3.13 via .python-version
- Add Makefile commands: lint, format, fix
- Apply ruff formatting to entire codebase
- Remove unused imports (base64 in yookassa/simple_subscription)
- Update .gitignore for new config files
2026-01-24 17:45:27 +03:00
gy9vin
7aa64521d2 feat(payments): добавить KassaAI как отдельную платёжную систему
Новая платёжка KassaAI (api.fk.life) работает параллельно с Freekassa.

  Добавлено:
  - app/services/kassa_ai_service.py — API-сервис
  - app/database/crud/kassa_ai.py — CRUD-операции
  - app/services/payment/kassa_ai.py — KassaAiPaymentMixin
  - app/handlers/balance/kassa_ai.py — хендлеры пополнения

  Изменено:
  - config.py — настройки KASSA_AI_*
  - models.py — PaymentMethod.KASSA_AI, модель KassaAiPayment
  - payment_service.py — подключён KassaAiPaymentMixin
  - webserver/payments.py — webhook /kassa-ai-webhook
  - keyboards/inline.py — кнопка KassaAI
  - handlers/balance/main.py — регистрация хендлеров
  - universal_migration.py — миграция таблицы kassa_ai_payments
  - system_settings_service.py — настройки в админке
  - .env.example — примеры переменных

  Способы оплаты: 44=СБП, 36=Карты РФ, 43=SberPay
2026-01-20 19:09:27 +03:00
gy9vin
dff723aede feat(monitoring): добавить настройки мониторинга трафика в админку
- Добавлена кнопка "⚙️ Настройки трафика" в меню мониторинга
  - Добавлен UI для управления быстрой и суточной проверками трафика
  - Можно включать/выключать проверки, менять пороги и интервалы
  - Настройки сохраняются в БД через BotConfigurationService
  - Добавлены SETTING_HINTS с описаниями параметров
2026-01-20 17:19:57 +03:00
gy9vin
78d785f83f fix(contests): исправлены критические баги системы конкурсов
- Исправлен вызов get_active_rounds в админ-панели (передавалось 2 параметра вместо 1)
- Обновлены кнопки редактирования призов с prize_days на prize_type/prize_value
- Мигрирован Cabinet API с устаревшего prize_days на новые поля
- Добавлена поддержка нескольких типов призов (дни, баланс, кастом)
- Обновлена документация API конкурсов
2026-01-18 10:15:45 +03:00
libkit
7a351d3028 feat(keyboards): добавить кнопку типа DISCOUNT в меню промокодов
Кнопка "💸 Одноразовая скидка" в меню выбора типа промокода.
2026-01-17 11:23:08 +05:00
Egor
5f39821652 Update admin.py 2026-01-17 05:05:12 +03:00
Egor
87f909d9bc Update admin.py 2026-01-13 01:05:36 +03:00
Egor
2090da3603 Update inline.py 2026-01-12 16:30:24 +03:00
Egor
7c4471a510 Update inline.py 2026-01-12 15:48:51 +03:00
Egor
42978e2a37 Update inline.py 2026-01-12 15:27:37 +03:00
Egor
b2577d5973 Update inline.py 2026-01-11 04:09:19 +03:00
Egor
2c4b77ff8c Update inline.py 2026-01-10 21:05:58 +03:00
Egor
e6676720f2 Update inline.py 2026-01-10 20:57:49 +03:00
Egor
e66944e2bf Update inline.py 2026-01-10 20:29:53 +03:00
gy9vin
3299d47b11 merge: resolve conflict in universal_migration.py 2026-01-07 15:05:14 +03:00
gy9vin
4afefcafa4 Добавлена система вывода реферального баланса
Новая функциональность вывода средств:
  - config.py: добавлены настройки вывода (минимальная сумма, кулдаун, анализ подозрительности, тестовый режим)
  - models.py: добавлена модель WithdrawalRequest с полями для заявок, анализа рисков и обработки админ
2026-01-07 14:54:50 +03:00
Mikhail
c582e1b0c6 Merge branch 'BEDOLAGA-DEV:main' into main 2026-01-07 14:24:08 +03:00
Egor
47433d905e Update admin.py 2026-01-07 04:30:54 +03:00
Egor
61fe7f0be4 Update inline.py 2026-01-07 03:49:31 +03:00
Egor
6c0c3f1b79 Update inline.py 2026-01-07 03:03:55 +03:00
Egor
e48ebca91e Update inline.py 2026-01-07 02:55:26 +03:00
Egor
e301d49657 Add tariffs button to admin keyboard 2026-01-07 02:21:42 +03:00
Egor
738216cf9f Add tariff change button for tariff mode 2026-01-07 02:21:15 +03:00
Egor
e9ce583eb2 Add files via upload 2026-01-06 20:59:02 +03:00
gy9vin
8342e8fe35 Ручной запуск мониторинга трафика
Ручная проверка в админке (monitoring.py):
  - Новая кнопка "📊 Проверка трафика" в меню мониторинга
  - Проверяет всех юзеров с активной подпиской
  - Показывает результат: сколько проверено, сколько превышений
  - Отправляет уведомления админам при превышении
2026-01-04 21:21:05 +03:00
gy9vin
ff51a984ef fix Параметризация callback_data в get_back_keyboard + поддержка модема в уведомлениях
1. app/keyboards/inline.py
  - Добавлен параметр callback_data: str = "back_to_menu" в get_back_keyboard()
  - Позволяет использовать кнопку "Назад" с разными callback'ами

2. app/services/admin_notification_service.py
  - Добавлен тип "modem" в update_types с заголовком "📡 ИЗМЕНЕНИЕ МОД
2025-12-31 10:16:14 +03:00
Egor
5918f296ff Update inline.py 2025-12-30 18:33:18 +04:00
Egor
63ec894615 Update inline.py 2025-12-30 18:11:56 +04:00
gy9vin
2a2a3daaae fix(contests): исправление статистики реферальных конкурсов
Основные исправления:
  - Фильтрация событий по дате регистрации реферала (occurred_at)
    в период конкурса (start_at - end_at)
  - Лидерборд теперь показывает правильные числа (было 21, стало 11)
  - Разделение DEPOSIT и SUBSCRIPTION_PAYMENT в статистике:
    - Основная метрика: покупки подписок (SUBSCRIPTION_PAYMENT)
    - Информационно: пополнения баланса (DEPOSIT)

  Новый функционал:
  - Кнопка "🔍 Отладка" для просмотра транзакций конкурса
  - Разбивка сумм по типам в детальной статистике
  - Кнопки "Назад" в синхронизации и отладке
  - Логирование дат фильтрации в синхронизации

  Также исправлено:
  - NaloGO: защита от дублирования чеков в очереди
    (проверка nalogo:created и nalogo:queued в Redis)
2025-12-30 02:08:23 +03:00
gy9vin
23f8bdfbec feat(restrictions): добавить систему ограничений пользователей
Добавлена возможность ограничивать пользователям:
  - Пополнение баланса (restriction_topup)
  - Покупку/продление подписки (restriction_subscription)

  Изменения:
  - models.py: добавлены поля restriction_topup, restriction_subscription,
    restriction_reason и property has_restrictions
  - universal_migration.py: миграция для новых полей
  - admin/users.py: меню управления ограничениями в карточке пользователя
  - keyboards/admin.py: клавиатура ограничений с toggle-кнопками
  - states.py: состояние editing_user_restriction_reason

  Проверки ограничений добавлены на двух уровнях:
  - start_*_payment: при выборе метода оплаты
  - process_*_payment_amount: при создании платежа

  Затронутые провайдеры: stars, yookassa, mulenpay, wata, pal24,
  cryptobot, heleket, platega, tribute, cloudpayments

  При ограничении пользователь видит причину и кнопку "Обжаловать",
  ведущую на контакт поддержки из настроек.
2025-12-28 13:32:04 +03:00
gy9vin
cad9abd8bd feat(payments): умная автоактивация подписки после пополнения + округление цен
Добавлена функция умной автоактивации подписки после пополнения баланса:

  - Новая настройка AUTO_ACTIVATE_AFTER_TOPUP_ENABLED в .env
  - Функция auto_activate_subscription_after_topup() в subscription_auto_purchase_service.py:
    - Автоматически продлевает истёкшую подписку с теми же параметрами
    - Создаёт новую подписку с дефолтными параметрами если подписки нет
    - Проверяет достаточность баланса перед активацией
    - Интеграция с RemnaWave API
    - Уведомления пользователю и админам

  - Интеграция во все 9 платёжных провайдеров:
    - Stars, CryptoBot, YooKassa, CloudPayments
    - WATA, Platega, Pal24, MulenPay, Tribute

  - Исправлен handle_activate_button в menu.py:
    - Полная переработка с интеграцией RemnaWave
    - Корректная работа с балансом и транзакциями
    - Использование SubscriptionRenewalService

  Добавлено округление цен при отображении:

  - Новая настройка PRICE_ROUNDING_ENABLED в .env
  - Логика: ≤50 коп → вниз, >50 коп → вверх
  - Применяется везде: пополнения, партнёрки, скидки, промогруппы
2025-12-26 23:38:46 +03:00
gy9vin
bf9728352e feat(subscription): улучшение UX выбора серверов и устройств
- Кнопки устройств теперь в один столбец (вместо 2 колонок)
  - Автоматический предвыбор бесплатных серверов (price_kopeks == 0)
  - Вывод описания сквадов в тексте сообщения над кнопками

  Изменённые файлы:
  - keyboards/inline.py: get_devices_keyboard в 1 столбец
  - handlers/subscription/countries.py: хелперы _get_preselected_free_countries и _build_countries_selection_text
  - handlers/subscription/purchase.py, traffic.py, autopay.py: применение новой логики
2025-12-26 22:15:34 +03:00
Mikhail
fb9405cccd Merge branch 'BEDOLAGA-DEV:main' into main 2025-12-25 23:56:04 +03:00
Egor
a59a15af7f Update inline.py 2025-12-25 21:07:42 +03:00
gy9vin
0538d0e337 feat(traffic): улучшение системы докупки и сброса трафика
- Добавлен ENV переключатель TRAFFIC_TOPUP_ENABLED для вкл/выкл докупки
- Добавлена отдельная конфигурация пакетов TRAFFIC_TOPUP_PACKAGES_CONFIG
- Добавлено поле purchased_traffic_gb для отслеживания докупленного трафика
- Добавлены режимы расчета цены сброса (period/traffic/traffic_with_purchased)
- Исправлен абьюз: цена сброса теперь учитывает докупленный трафик
- Сброс purchased_traffic_gb при продлении/покупке подписки
- UX: меню сброса теперь показывает цену и баланс вместо alert
- UX: кнопка пополнения если не хватает средств на сброс
- Добавлена миграция для нового поля purchased_traffic_gb
- Добавлена локализация TRAFFIC_TOPUP_DISABLED (ru/en/ua/zh)
2025-12-25 14:48:24 +03:00
gy9vin
90c3df6331 Добавлен функционал подключения модема к подписке
Изменения:
- Добавлены настройки модема в .env.example и config.py (MODEM_ENABLED, MODEM_PRICE_PER_MONTH, MODEM_PERIOD_DISCOUNTS)
- Добавлено поле modem_enabled в модель Subscription
- Реализован модуль handlers/subscription/modem.py с обработчиками подключения/отключения модема
- Добавлено управ
2025-12-25 14:26:15 +03:00
Egor
f1be66d1a5 Update inline.py 2025-12-23 20:35:42 +03:00
Egor
63a9c1afd1 Update inline.py 2025-12-23 16:09:58 +03:00
Egor
65da3a57a7 Update inline.py 2025-12-22 19:32:36 +03:00
Egor
4077b2a032 Update admin.py 2025-12-22 14:42:52 +03:00
Egor
0951c9f6dd Add one-time pinned message delivery mode 2025-12-22 13:32:34 +03:00
Egor
42759854c2 Use timezone-aware datetime for calculations 2025-12-21 08:07:31 +03:00
Egor
bc6e57765e Use UTC for registration days calculation 2025-12-21 07:18:31 +03:00