Full Changelog: v2.1.3...v2.1.4
⚙️ Улучшения системы управления серверами
🌟 Добавлено
- Автоматический пропуск выбора серверов при покупке подписки, если доступен только один сервер
- Условное отображение управления серверами в настройках подписки в зависимости от количества доступных серверов
- Функция
_should_show_countries_management()для проверки необходимости отображения управления серверами
🔄 Изменено
- Логика покупки подписки: при выборе периода и трафика система автоматически проверяет количество доступных серверов
- Настройки подписки: кнопка "Добавить страны" отображается только при наличии более одного доступного сервера
- Обработка добавления серверов: добавлена проверка доступности функции с информативным сообщением
🧑🦽➡️ Поведение системы
-
При одном доступном сервере:
- Автоматический выбор сервера при покупке подписки
- Скрытие кнопки управления серверами в настройках
- Блокировка функции добавления серверов с уведомлением пользователя
-
При нескольких доступных серверах:
- Стандартный процесс выбора серверов при покупке
- Полный доступ к управлению серверами в настройках
- Возможность добавления и отключения серверов как раньше
Файлы изменены
app/handlers/subscription.py- основная логикаapp/keyboards/inline.py- клавиатуры интерфейса
🔧 Добавлена система уведомлений администраторов о техническом состоянии
✨ Новые возможности
📨 Система уведомлений администраторов
- Добавлены автоматические уведомления в Telegram для администраторов о критических событиях
- Интеграция
maintenance_serviceс ботом для отправки сообщений - Предотвращение спама уведомлений (кеширование на 5 минут)
- Красиво оформленные сообщения с эмодзи и подробной информацией
🚨 Мониторинг состояния API
- Уведомления при первой ошибке подключения к RemnaWave API
- Предупреждения о недоступности сервисов
- Уведомления о восстановлении работы API
- Информация о длительности простоя
⚙️ Управление техническими работами
- Уведомления о включении/выключении режима техработ
- Информация об автоматическом и ручном включении режима
- Отчеты о причинах включения техработ
- Статистика по неудачным проверкам
🔄 Жизненный цикл сервисов
- Уведомления о запуске/остановке мониторинга
- Информация о конфигурации системы
- Статус подключения бота к системе уведомлений
🛠️ Технические улучшения
MaintenanceService
- Добавлен метод
set_bot()для подключения к Telegram боту - Новый метод
_notify_admins()с поддержкой разных типов уведомлений - Улучшенное логирование событий
- Кеширование статуса для предотвращения потери данных
Интеграция с основным процессом
- Исправлено подключение бота к
maintenance_serviceвmain.py - Обновлен
bot.pyдля корректной инициализации сервиса - Улучшена последовательность запуска сервисов
Типы уведомлений
🚨 error- критические ошибки и недоступность API⚠️ warning- предупреждения и автоматические действия✅ success- восстановление работы и успешные операцииℹ️ info- информационные сообщения о состоянии системы
📋 Что получают администраторы
При недоступности API:
🚨 Maintenance Service
API RemnaWave недоступно!
❌ Статус: Недоступно
🕐 Время обнаружения: 14:32:15
🔄 Попытка: 1
Началась серия неудачных проверок API.
При восстановлении:
✅ Maintenance Service
API RemnaWave восстановлено!
✅ Статус: Доступно
🕐 Время восстановления: 14:35:22
🔄 Неудачных попыток было: 3
API снова отвечает на запросы.
При автоматическом включении техработ:
⚠️ Maintenance Service
Режим технических работ ВКЛЮЧЕН
📋 Причина: Автоматическое включение после 3 неудачных проверок API
🤖 Автоматически: Да
🕐 Время: 02.09.2025 14:32:45
Обычные пользователи временно не смогут использовать бота.
🔧 Настраиваемые описания платежей для избежания блокировок
Что было исправлено:
- Убран хардкод "пополнение баланса VPN" из всех платежных систем
- Добавлены настраиваемые переменные окружения для описаний платежей
- Реализована система шаблонов для генерации безопасных описаний
Новые переменные в .env:
PAYMENT_SERVICE_NAME=Интернет-сервис
PAYMENT_BALANCE_DESCRIPTION=Пополнение баланса
PAYMENT_SUBSCRIPTION_DESCRIPTION=Оплата подписки
PAYMENT_BALANCE_TEMPLATE={service_name} - {description}
PAYMENT_SUBSCRIPTION_TEMPLATE={service_name} - {description}Изменения в коде:
app/config.py:
- Добавлены новые настройки для описаний платежей
- Добавлены методы
get_balance_payment_description(),get_subscription_payment_description(),get_custom_payment_description()
app/handlers/balance.py:
- Заменен хардкод в
process_yookassa_payment_amount() - Заменен хардкод в
process_stars_payment_amount() - Заменен хардкод в
start_tribute_payment()
Результат:
Теперь вместо "Пополнение баланса VPN на 150.00 ₽" в YooKassa будет отправляться "Интернет-сервис - Пополнение баланса на 150.00 ₽" или любое другое безопасное описание, настроенное в .env файле.
Это решает проблему блокировок платежных систем за упоминание VPN в описании транзакций.
✍️ Улучшение админского UX
- Частично убраны лишние кнопки
✍️ Улучшены Readme + docker-compose.yml + dockerfile
- Описаны все параметры env
- Обновлен env.example
Теперь достаточно сделать
git clone https://github.com/Fr1ngg/remnawave-bedolaga-telegram-bot.git
настроить .env + вебхуки и бот полностью готов к запуску