Commit Graph

623 Commits

Author SHA1 Message Date
Egor
fe4e261115 Merge pull request #2275 from BEDOLAGA-DEV/buttons
Buttons
2026-01-13 03:33:39 +03:00
PEDZEO
a686333603 Add support for custom days and traffic in tariffs
- Introduced fields for custom days and traffic in the tariff model, including enabling flags, pricing, and limits.
- Updated relevant routes and schemas to handle new tariff features.
- Implemented logic for purchasing and managing custom days and traffic in subscriptions.
- Added database migration scripts to accommodate new columns for tariffs and subscriptions.
2026-01-13 02:55:32 +03:00
Egor
eac299d0bd Update backup_service.py 2026-01-13 01:37:46 +03:00
Egor
31241a6f01 Update backup_service.py 2026-01-13 01:31:02 +03:00
Egor
1b51886dd1 Update yookassa.py 2026-01-12 23:51:39 +03:00
PEDZEO
ac5850746e Merge pull request #2271 from BEDOLAGA-DEV/main
merge main
2026-01-12 22:25:49 +03:00
Egor
40f1312d0b Update backup_service.py 2026-01-12 19:29:03 +03:00
Egor
71ff89ca55 Update monitoring_service.py 2026-01-12 16:56:00 +03:00
Egor
62bec70db9 Update daily_subscription_service.py 2026-01-12 16:29:59 +03:00
Egor
4967c7ff7d Update daily_subscription_service.py 2026-01-12 16:05:31 +03:00
Egor
49bd69f987 Add files via upload 2026-01-12 15:24:17 +03:00
PEDZEO
15f6108674 feat(tariffs): добавлена поддержка докупки трафика и улучшения тарифов
- Реализована возможность докупки трафика для тарифов с новыми параметрами: traffic_topup_enabled, traffic_topup_packages и max_topup_traffic_gb.
- Обновлены схемы и маршруты для управления тарифами и трафиком.
- Добавлены новые эндпоинты для работы с докупкой трафика в мини-приложении.
- Обновлены настройки и логика для проверки доступности докупки трафика в зависимости от тарифа.
- Внедрены улучшения в обработку платежей через Freekassa.

Обновлён .env.example с новыми параметрами для режима тарифов.
2026-01-12 07:47:35 +03:00
PEDZEO
0e24a5505c feat(subscription): добавлены новые функции для управления тарифами и трафиком
- Обновлены схемы и маршруты для поддержки покупки тарифов и управления трафиком.
- Реализована синхронизация тарифов и серверов из RemnaWave при запуске.
- Добавлены новые параметры в тарифы: server_traffic_limits и allow_traffic_topup.
- Обновлены настройки и логика для проверки доступности докупки трафика в зависимости от тарифа.
- Внедрены новые эндпоинты для работы с колесом удачи и обработка платежей через Stars.

Обновлён .env.example с новыми параметрами для режима продаж подписок.
2026-01-12 07:41:10 +03:00
evansvl
b5234f3265 Enhance Freekassa payment handling and improve Docker Compose configuration 2026-01-11 05:45:09 +03:00
evansvl
edb335ee52 Reduce Freekassa API logging verbosity 2026-01-11 05:44:43 +03:00
evansvl
a54a12825e Add Freekassa webhook handling and configuration options 2026-01-11 05:06:07 +03:00
Egor
b2e00ecbbe Update user_service.py 2026-01-10 20:48:42 +03:00
Egor
4d62fa946b Update freekassa_service.py 2026-01-10 19:40:56 +03:00
Egor
af5401a393 Update freekassa_service.py 2026-01-10 18:38:20 +03:00
gy9vin
eaeb6def51 feat(config): добавлено предупреждение после пополнения и обновлён .env.example
Новый функционал:
- SHOW_ACTIVATION_PROMPT_AFTER_TOPUP — показывает предупреждение с кнопками
  "Активировать", "Продлить", "Добавить устройства" после пополнения баланса,
  если подписка не активна (режим для новичков)

Обновлён .env.example (+138 строк):
- Redis: CART_TTL_SECONDS
- Remnawave: AUTO_SYNC_*, TRIAL_USER_TAG, PAID_SUBSCRIPTION_USER_TAG
- Трафик: BUY_TRAFFIC_BUTTON_VISIBLE, PRICE_TRAFFIC_UNLIMITED
- Автопродление: ENABLE_AUTOPAY
- Конкурсы: REFERRAL_CONTESTS_ENABLED
- YooKassa: TRUSTED_PROXY_NETWORKS
- Mulenpay: DISPLAY_NAME, IFRAME_EXPECTED_ORIGIN, DISPLAY_NAME_BANNED_KEYWORDS
- Platega: DISPLAY_NAME
- WATA: PUBLIC_KEY_CACHE_SECONDS, PUBLIC_KEY_URL
- CloudPayments: API_URL, WIDGET_URL, RETURN_URL
- Интерфейс: MENU_LAYOUT_ENABLED, MINIAPP_PURCHASE_URL, HAPP_DOWNLOAD_LINK_PC
- Web API: WORKERS, TITLE, VERSION, TOKEN_HASH_ALGORITHM, REQUEST_LOGGING,
  EXTERNAL_ADMIN_TOKEN, EXTERNAL_ADMIN_TOKEN_BOT_ID

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 11:16:52 +03:00
gy9vin
4c1ebd9f61 Merge branch 'main' of https://github.com/Gy9vin/remnawave-bedolaga-telegram-bot 2026-01-08 11:00:38 +03:00
gy9vin
51b88068bd fix(payment): добавлен параметр bot в auto_activate_subscription_after_topup
- Передача bot через getattr(self, "bot", None) во всех платёжных провайдерах
  - Добавлена отправка предупреждений пользователю при отключенной автоактивации
  - Добавлены предупреждения о необходимости активации подписки после пополнения
2026-01-08 11:00:34 +03:00
Mikhail
f25ed360fc Merge branch 'BEDOLAGA-DEV:main' into main 2026-01-08 08:12:45 +03:00
Egor
744e5c1453 Update campaign_service.py 2026-01-08 03:28:49 +03:00
Egor
cf53801408 Update freekassa.py 2026-01-08 03:18:56 +03:00
Egor
4e59d0a071 Update freekassa_service.py 2026-01-08 03:18:31 +03:00
gy9vin
2607ee4d0a fix(referral-withdrawal): исправления тестового режима вывода
1. Исправлена кнопка "Профиль" после тестового начисления
     - callback изменён с admin_user_{id} на admin_user_manage_{id}

  2. Исправлена логика расчёта доступного баланса
     - Добавлен метод get_first_referral_earning_date()
     - Добавлен метод get_user_spending_after_first_earning()
     - Теперь учитываются только траты ПОСЛЕ первого реф. начисления
     - Старые траты больше не уменьшают доступный реферальный баланс

  3. Добавлен bypass cooldown в тестовом режиме
     - При REFERRAL_WITHDRAWAL_TEST_MODE=true 30-дневный cooldown пропускается
2026-01-07 16:05:42 +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
917fa84838 Update service.py 2026-01-07 04:07:52 +03:00
Egor
541d3c903d Update subscription_auto_purchase_service.py 2026-01-07 02:37:30 +03:00
Egor
a448a2c450 Add files via upload 2026-01-07 02:22:36 +03:00
Egor
53a10c0640 Add files via upload 2026-01-06 20:56:44 +03:00
Mikhail
03d30dd5c0 Merge branch 'BEDOLAGA-DEV:main' into main 2026-01-04 21:15:40 +03:00
gy9vin
27512825ae Улучшение системы мониторинга трафика
Изменения в traffic_monitoring_service.py:

  1. Добавлен импорт get_db — для получения сессии БД внутри цикла
  2. Добавлен set_bot() — для установки бота
  3. Изменён start_monitoring() — не требует db и bot как параметры
  4. Добавлен кэш уведомлений — защита от спама (1 уведомление в 24ч на юзера)
  5. Добавлена очистка кэша — удаляет записи старше 48ч

  Изменения в main.py:

  1. Импорт traffic_monitoring_scheduler
  2. Переменная traffic_monitoring_task
  3. set_bot() при старте
  4. Stage "Мониторинг трафика" с логированием интервала и порога
  5. Секция "Активные фоновые сервисы" — добавлен статус
  6. Перезапуск при ошибке в основном цикле
  7. Остановка в блоке finally

  ---
  Как включить

  В .env на сервере:

  TRAFFIC_MONITORING_ENABLED=true
  TRAFFIC_THRESHOLD_GB_PER_DAY=10.0
  TRAFFIC_MONITORING_INTERVAL_HOURS=1
  SUSPICIOUS_NOTIFICATIONS_TOPIC_ID=14

  После перезагрузки бота увидишь в логах:

  📊 Мониторинг трафика
     ├ Интервал проверки: 1 ч
     ├ Порог трафика: 10.0 ГБ/сутки
     └  Мониторинг трафика запущен
2026-01-04 21:15:29 +03:00
PEDZEO
258a4a5cb4 Merge pull request #2230 from BEDOLAGA-DEV/buttons
Buttons
2026-01-03 14:41:17 +03:00
gy9vin
9cd5d8e0b9 Фикс промокодов 2026-01-02 19:23:52 +03:00
gy9vin
2156f630dc Добавлена опция "только для первой покупки" в промокоды
- models.py: добавлено поле first_purchase_only в PromoCode
- universal_migration.py: миграция для добавления колонки first_purchase_only
- promocodes.py: добавлен хендлер toggle_promocode_first_purchase, отображение статуса в управлении промокодом
- promocode.py: обработка ошибки "not
2026-01-02 16:40:04 +03:00
gy9vin
917ca69b1d фикс 2026-01-02 16:20:42 +03:00
gy9vin
d524088bb8 Обязательная подписка на канал Доработка 2026-01-02 16:14:40 +03:00
PEDZEO
c41979bda6 fix 2026-01-02 00:48:08 +03:00
PEDZEO
6b69ec750e feat: add cabinet (personal account) backend API
- Add JWT authentication for cabinet users
- Add Telegram WebApp authentication
- Add subscription management endpoints
- Add balance and transactions endpoints
- Add referral system endpoints
- Add tickets support for cabinet
- Add webhooks and websocket for real-time updates
- Add email verification service

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 23:20:20 +03:00
gy9vin
4bebff5c4a fix(auto-activation): исправлен парсинг AVAILABLE_SUBSCRIPTION_PERIODS
Ошибка: код итерировал по строке "14,30,60,90,180,360" посимвольно,
  что приводило к ValueError: invalid literal for int() with base 10: ','

  Заменено на settings.get_available_subscription_periods() который
  корректно парсит строку в список [14, 30, 60, 90, 180, 360].
2026-01-01 22:55:01 +03:00
Mikhail
e2ae7dd34d Merge branch 'BEDOLAGA-DEV:main' into main 2026-01-01 22:48:27 +03:00
gy9vin
e15728e369 Fix простой покупки 2026-01-01 22:47:40 +03:00
Egor
ecaf270e04 Merge pull request #2228 from yazhog/main
Новые коды НДС для Юкассы
2025-12-31 14:07:48 +04:00
yazhog
800d589afa Document YooKassa VAT codes in env example 2025-12-31 12:00:48 +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
gy9vin
a4072237cc fix(nalogo): защита от дублирования чеков + очередь ручной проверки
ПРОБЛЕМА:
  При таймауте после успешной авторизации чек мог быть создан на сервере
  nalog.ru, но ответ не возвращался. Бот добавлял чек в очередь повторной
  отправки → создавался дубликат.

  РЕШЕНИЕ:
  1. Разделена обработка ошибок на два этапа:
     - Аутентификация не прошла → чек точно не создан → в очередь
     - Таймаут при создании → чек МОГ быть создан → НЕ в очередь

  2. Новая очередь `nalogo:pending_verification` для чеков требующих
     ручной проверки (когда таймаут после успешной авторизации)

  3. Кнопка в админке: Мониторинг → Статистика → "⚠️ Проверить (N)"
     - Показывает список чеков с суммой, датой, payment_id
     - " Создан" — чек найден в налоговой, убираем из очереди
     - "🔄 Отправить" — чек НЕ найден, отправляем повторно
     - "🗑 Очистить всё" — после полной сверки с lknpd.nalog.ru

  4. Таймаут увеличен с 10 до 30 секунд (NALOGO_TIMEOUT)

  5. Атомарная защита от race condition через cache.setnx()

  Изменённые файлы:
  - app/utils/cache.py — добавлен метод setnx()
  - app/services/nalogo_service.py — разделение ошибок, pending_verification
  - app/services/nalogo_queue_service.py — статус pending в get_status()
  - app/handlers/admin/monitoring.py — UI для ручной проверки
2025-12-31 01:25:47 +03:00