What's Changed
Full Changelog: v2.1.8...v2.1.9
🔧 Расширение админ-панели: Управление серверами и ресурсами пользователей
✨ Новые функции
🌍 Управление серверами
- Мультивыбор серверов: Админы могут назначать пользователям несколько серверов через переключатель
- Логика отображения серверов: Показывает активные серверы + уже назначенные пользователю неактивные серверы
- Синхронизация в реальном времени: Все изменения серверов автоматически синхронизируются с RemnaWave панелью
📱 Управление устройствами
- Изменение лимита устройств: Админы могут менять количество разрешенных устройств (1-X)
- Быстрые кнопки: Предустановленные значения 1, 2, 3, 5, 10 устройств
- Сброс HWID: Функция сброса привязанных устройств пользователя
📊 Управление трафиком
- Настройка лимитов трафика: Возможность установки лимита от 0 ГБ до 10000 ГБ
- Безлимитный режим: Опция установки безлимитного трафика (0 ГБ)
- Быстрые настройки: Предустановленные значения 50, 100, 500, 1000 ГБ
🔧 Технические улучшения
🗂️ Новая структура интерфейса
- Кнопка "⚙️ Настройки" в карточке пользователя
- Централизованное управление: Единый интерфейс для серверов, устройств и трафика
- Интуитивные переключатели: ✅/⚪ индикация состояния серверов
🔄 Синхронизация с Remnawave
- Двусторонняя синхронизация: Изменения сохраняются в базе данных бота и RemnaWave панели
- Обработка ошибок: Логирование ошибок синхронизации с сохранением работоспособности
- Автоматические обновления: Обновление пользовательских данных в реальном времени
📁 Измененные файлы
app/handlers/admin/users.py- Добавлены новые обработчики и функции управленияapp/keyboards/admin.py- Обновлена клавиатура управления пользователемapp/states.py- Добавлены новые состояния FSM
🚀 Использование
- Перейти в админ-панель → Пользователи → Выбрать пользователя
- Нажать "⚙️ Настройки" для доступа к новому функционалу
- Управлять серверами, устройствами и трафиком через интуитивный интерфейс
⚡ Быстрые действия
- Смена серверов: Переключение серверов одним кликом
- Настройка устройств: Быстрое изменение лимита устройств
- Управление трафиком: Мгновенная настройка лимитов трафика
- Сброс устройств: Одна кнопка для сброса HWID устройств
Все изменения логируются и синхронизируются с внешней панелью управления.
Исправление дублирования уведомлений
Проблема
- Пользователи получали дублирующиеся уведомления об истечении подписки (за 3 дня и за 1 день одновременно)
- При перезагрузке бота уведомления отправлялись повторно
- Два независимых механизма отправки уведомлений работали параллельно
Решение
Удаленные файлы
app/handlers/subscription_notifications.py- дублирующий механизм уведомлений
Изменения в app/services/monitoring_service.py
Система предотвращения дублирования
- Добавлена улучшенная система кеширования с уникальными ключами
- Реализована автоматическая очистка кеша каждый час
- Добавлена приоритизация уведомлений (отправляется только самое срочное)
Новые возможности
- Локальная защита от дублирования в рамках одного цикла мониторинга
- Подробное логирование успешных и неуспешных отправок
- Возврат boolean из функций отправки уведомлений для контроля
Оптимизация логики
- Централизация всех уведомлений в одном сервисе
- Проверка приоритетов: пользователю отправляется только самое срочное уведомление
- Улучшенная обработка ошибок при отправке
Ключевые изменения
# Уникальные ключи кеширования
notification_key = f"expiring_{user.telegram_id}_{days}d_{subscription.id}"
user_key = f"user_{user.telegram_id}_today"
# Приоритизация уведомлений
for other_days in warning_days:
if other_days < days: # Более срочное уведомление
should_send = FalseРезультат
- Устранено дублирование уведомлений
- Пользователи получают только одно уведомление - самое актуальное
- Упрощена архитектура системы уведомлений
- Повышена надежность работы после перезапуска
Совместимость
- Обновление обратно совместимо
- Настройки в
.envостаются без изменений