Новый функционал:
- Быстрая проверка (TRAFFIC_FAST_CHECK_*) — отслеживает дельту трафика за интервал через snapshot
- Суточная проверка (TRAFFIC_DAILY_CHECK_*) — анализирует трафик за 24 часа через bandwidth API
- Фильтрация по нодам (TRAFFIC_MONIT
Изменения в 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 ГБ/сутки
└ ✅ Мониторинг трафика запущен
Исправленные файлы:
1. app/services/traffic_monitoring_service.py — удалены неиспользуемые импорты Decimal, aiohttp
2. app/services/blacklist_service.py — удалён неиспользуемый импорт re
3. app/database/crud/user.py:998 — создана отсутствующая функция get_users_with_active_subscriptions:
async def get_users_with_active_subscriptions(db: AsyncSession) -> List[User]:
3. Функция:
- Возвращает пользователей с активными подписками
- Фильтрует по remnawave_uuid IS NOT NULL (нужен для API Remnawave)
- Проверяет end_date > now и status == ACTIVE