github BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot v2.1.8

latest releases: v3.52.1, v3.52.0, v3.51.0...
7 months ago

What's Changed

🚀 Обновление системы управления пакетами трафика

✨ Новые функции

Динамическая система пакетов трафика:

  • Добавлена поддержка конфигурации пакетов трафика через переменную окружения TRAFFIC_PACKAGES_CONFIG
  • Формат конфигурации: GB:PRICE_KOPEKS:ENABLED (например: 5:10000:true,10:20000:true,0:500000:true)

Логика продления подписок:

  • Исправлен расчет стоимости трафика при продлении (использовался устаревший словарь TRAFFIC_PRICES)

Умная обработка пакетов:

  • Добавлен алгоритм поиска подходящего пакета при отсутствии точного совпадения
  • Если трафик превышает максимальный пакет, автоматически применяется безлимитный тариф

📝 Изменения в коде

Файлы изменены:

  • app/config.py - улучшена функция get_traffic_price() с поддержкой интеллектуального поиска пакетов
  • app/keyboards/inline.py - исправлены функции get_traffic_packages_keyboard() и get_add_traffic_keyboard()
  • app/services/subscription_service.py - обновлены функции расчета стоимости с использованием новой системы цен

Новые функции:

  • _determine_original_traffic_package() - определение исходного пакета трафика на основе текущих лимитов

⚡ Производительность

  • Кэширование конфигурации пакетов трафика
  • Оптимизированный поиск подходящих тарифных планов
  • Уменьшено количество обращений к базе данных при расчете цен

🔒 Обратная совместимость

  • Сохранена поддержка старых статических цен как fallback
  • Существующие подписки автоматически адаптируются к новой системе
  • Миграция данных происходит прозрачно для пользователей

ОБЯЗАТЕЛЬНО ОБНОВИТЕ КОНФИГУРАЦИЮ ENV УДАЛИВ ЦЕНЫ СТАРОГО ФОРМАТА (PRICE_TRAFFIC_5GB= и тд)

Пример новой конфигурации:

TRAFFIC_PACKAGES_CONFIG="5:2000:false,10:3500:false,25:7000:false,50:11000:true,100:15000:true,250:17000:false,500:19000:false,1000:19500:true,0:20000:true""

Эта система делает управление тарифами значительно более гибким

📱 Обновление системы управления устройствами

Что исправлено:

  • Убран хардкод лимита на 10 устройств - теперь лимит настраивается через переменную окружения
  • Улучшен интерфейс выбора устройств - кнопки теперь располагаются в два столбца для экономии места
  • Сокращены тексты - убрано слово "устройства" из кнопок для более компактного отображения

Новые возможности:

  • Настраиваемый лимит устройств через MAX_DEVICES_LIMIT в ENV файле
  • Гибкая конфигурация: установите 0 для снятия лимита или любое число для установки максимума
  • Улучшенная валидация - проверка лимитов на всех этапах покупки и добавления устройств

Технические изменения:

  • Добавлена переменная MAX_DEVICES_LIMIT в конфигурацию
  • Обновлены функции get_devices_keyboard() и get_add_devices_keyboard()
  • Добавлены проверки лимитов в calculate_subscription_price() и confirm_add_devices()
  • Улучшен UX с компактным двухколоночным отображением кнопок

Настройка:

Добавьте в ваш .env файл:

# Максимальное количество устройств (0 = без лимита)
MAX_DEVICES_LIMIT=50

Совместимость:

  • Полностью обратно совместимо с существующими подписками
  • По умолчанию установлен разумный лимит в 50 устройств
  • Старые подписки продолжат работать без изменений

🔧 Исправление удаления пользователей через админку

Исправлена критическая ошибка

Проблема

При удалении пользователя через админ-панель возникала ошибка:

sqlalchemy.dialects.postgresql.asyncpg.Error: Key (id)=(1) is still referenced from table "yookassa_payments"

Причина

Неправильный порядок удаления связанных записей в базе данных. YooKassa платежи ссылались на транзакции через transaction_id, но транзакции удалялись раньше платежей, что вызывало нарушение внешнего ключа.

Что исправлено

📁 app/services/user_service.py

  • Переписана функция delete_user_account() с правильным порядком удаления
  • Добавлены недостающие импорты: YooKassaPayment, BroadcastHistory, select, update
  • Улучшено логирование процесса удаления для отладки

Правильный порядок удаления:

  1. Деактивация в RemnaWave
  2. YooKassa платежи (первым делом!)
  3. Транзакции пользователя
  4. Использования промокодов
  5. Реферальные доходы
  6. История рассылок
  7. Подключенные серверы подписки
  8. Подписка
  9. Очистка реферальных ссылок
  10. Удаление самого пользователя

Дополнительные улучшения:

  • Добавлена обработка исключений для каждого этапа удаления
  • Улучшена информативность логов
  • Добавлена защита от частичного удаления при ошибках

Результат

✅ Удаление пользователей через админку теперь работает без ошибок
✅ Все связанные данные корректно удаляются в правильном порядке
✅ Улучшена стабильность админ-панели

Файлы изменены

  • app/services/user_service.py - исправлена логика удаления пользователей

Don't miss a new remnawave-bedolaga-telegram-bot release

NewReleases is sending notifications on new releases.