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

latest releases: v3.5.0, v3.4.0, v3.3.0...
5 months ago

What's Changed

  • Dev by @Fr1ngg in #31
  • Dev by @Fr1ngg in #32
  • Переключение типа подписки by @Fr1ngg in #33
  • Исправление начисления партнерки за первый платеж реферала by @yazhog in #34
  • Проверка подписи API ключем для Tribute by @yazhog in #35
  • Фикс присылания рефкода сообщением by @yazhog in #36
  • Dev by @Fr1ngg in #37
  • Сообщения в меню by @Fr1ngg in #38
  • Антихлебная валидация HTML разметки при создании сообщения в меню by @Fr1ngg in #39

Full Changelog: v2.2.2...v2.2.3

👀 Управляемые сообщения в главном меню

🎯 Основные изменения

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

  • Система управляемых сообщений в главном меню: Администраторы теперь могут добавлять пользовательские сообщения, которые отображаются в главном меню между информацией о подписке и кнопками действий
  • Случайный показ сообщений: При наличии нескольких активных сообщений система выбирает случайное для показа пользователю
  • Поддержка HTML разметки: Сообщения поддерживают HTML теги для красивого оформления текста
  • Валидация HTML: Встроенная проверка корректности HTML тегов с подробными сообщениями об ошибках

🔧 Административные инструменты

  • Панель управления сообщениями: Новый раздел в админке "📢 Сообщения меню"
  • Создание и редактирование: Возможность добавлять, редактировать и удалять сообщения
  • Управление статусом: Быстрое включение/отключение сообщений
  • Статистика: Подсчет общего количества и активных сообщений
  • Предварительный просмотр: Показ сообщений с корректной HTML разметкой

🛡️ Безопасность и валидация

  • Проверка HTML тегов: Система блокирует использование неподдерживаемых тегов (br, div, span и др.)
  • Проверка парности тегов: Валидация корректной вложенности и закрытия HTML тегов
  • Справка по тегам: Встроенная документация по поддерживаемым HTML тегам
  • Ограничение длины: Максимальная длина сообщения 4000 символов

🗂️ Технические изменения

База данных

  • Новая таблица user_messages для хранения пользовательских сообщений
  • Поля: текст сообщения, статус активности, порядок сортировки, автор
  • Автоматические индексы для оптимизации запросов

Архитектура

  • Новый модуль app/handlers/admin/user_messages.py с полным набором CRUD операций
  • Расширенный функционал в app/utils/validators.py для проверки HTML
  • Обновленная логика формирования главного меню с интеграцией случайных сообщений
  • Новые CRUD операции в app/database/crud/user_message.py

Интеграция

  • Централизованная функция get_main_menu_text() для формирования текста меню
  • Поддержка HTML разметки во всех сообщениях главного меню

📋 Поддерживаемые HTML теги

  • <b>, <strong> - жирный текст
  • <i>, <em> - курсив
  • <u> - подчеркнутый
  • <s>, <strike>, <del> - зачеркнутый
  • <code> - моноширинный
  • <pre> - блок кода
  • <a href="url"> - ссылки
  • <blockquote> - цитаты

🚀 Как использовать

  1. Войдите в админ-панель
  2. Выберите "📢 Сообщения меню"
  3. Нажмите "📝 Добавить сообщение"
  4. Введите текст с HTML разметкой
  5. Сообщение автоматически появится в главном меню пользователей

Сообщения отображаются случайным образом, что позволяет показывать пользователям различную информацию: акции, новости, советы по использованию сервиса.


Совместимость: Обновление полностью обратно совместимо с существующими данными

🔧 Новые возможности система уведомлений о технических работах

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

📢 Уведомления в чат/топик

  • Автоматические уведомления при включении/выключении технических работ
  • Мониторинг API Remnawave с уведомлениями о статусе (восстановление/падение)
  • Отслеживание панели Remnawave и автоматические сообщения при изменении статуса
  • Ручная отправка уведомлений администраторами о статусе системы

🛠️ Расширенная админ-панель

  • Новые кнопки управления: проверка статуса панели Remnawave, отправка ручных уведомлений
  • Индикаторы проблем с визуальными предупреждениями при сбоях
  • Детальная информация о состоянии системы в реальном времени

🔍 Улучшенный мониторинг

  • Комплексная проверка здоровья панели RemnaWave
  • Автоматическое включение техработ при критических сбоях API
  • Уведомления о восстановлении с детальной статистикой

Типы уведомлений

  1. Технические работы

    • Включение/выключение с указанием причины и длительности
    • Автоматическое/ручное включение с соответствующими метками
  2. Статус API Remnawave

    • Уведомления о недоступности с деталями ошибок
    • Сообщения о восстановлении с временем отклика
  3. Мониторинг системы

    • Запуск/остановка системы мониторинга
    • Статистика проверок и настройки
  4. Панель Remnawave

    • Изменения статуса (онлайн/офлайн/проблемы/обслуживание)
    • Ручные уведомления от администраторов

Настройка

Для работы уведомлений добавьте в .env:

ADMIN_NOTIFICATIONS_ENABLED=true
ADMIN_NOTIFICATIONS_CHAT_ID=-100123456789
ADMIN_NOTIFICATIONS_TOPIC_ID=123

Технические улучшения

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

Все уведомления отправляются с красивым форматированием, эмодзи и временными метками для лучшей читаемости и отслеживания событий.

🔧 Улучшение системы уведомлений

📋 Краткое описание

Исправлена система административных уведомлений с улучшенным отображением информации о рефералах во всех типах уведомлений.

🚀 Основные изменения

✨ Улучшения уведомлений

  • Улучшено отображение информации о рефералах: Вместо простого "ID 1" теперь показывается:
    • @username (ID: 1) - если у реферера есть username
    • ID 987654321 - если username отсутствует (показывается Telegram ID)
    • Нет - если реферер отсутствует
    • ID 1 (не найден) - если реферер не найден в базе данных

🔨 Технические исправления

  • Добавлен параметр db: AsyncSession во все методы AdminNotificationService
  • Реализован метод _get_referrer_info() для получения корректной информации о рефералах
  • Исправлены вызовы уведомлений в следующих модулях:
    • subscription.py - 4 исправления
    • payment_service.py - 2 исправления для Stars и YooKassa платежей
    • tribute_service.py - 1 исправление

📱 Затронутые типы уведомлений

  • Активация триального периода
  • Покупка и продление подписок
  • Конверсия из триала в платную подписку
  • Пополнение баланса (Stars, YooKassa, Tribute)

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

app/services/admin_notification_service.py    # Основные улучшения
app/handlers/subscription.py                  # Исправления вызовов
app/services/payment_service.py              # Исправления для платежей
app/services/tribute_service.py              # Исправления Tribute

📊 Пример улучшения

До:

🔗 Реферер: ID 1

После:

🔗 Реферер: @johndoe (ID: 1)

или

🔗 Реферер: ID 987654321

🐛 Исправленные проблемы

  • Исправлена ошибка с отсутствующим параметром db в уведомлениях
  • Устранена проблема с некорректным отображением информации о рефералах
  • Исправлены ошибки в уведомлениях о платежах через Stars

🔐 Важное исправление безопасности: Защита вебхуков Tribute by @yazhog in

🚨 Важное обновление безопасности

Исправлена уязвимость

  • Проблема: Отсутствовала проверка подписи HMAC-SHA256 для вебхуков Tribute
  • Риск: Злоумышленники могли отправлять поддельные запросы для пополнения баланса
  • Статус: ❌ Критическая уязвимость → ✅ Исправлена

🛡️ Что добавлено

  • Валидация заголовка trbt-signature с HMAC-SHA256
  • Проверка подлинности всех входящих вебхуков от Tribute
  • Защита от replay-атак
  • Логирование подозрительных запросов

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

  • Обновлен обработчик вебхуков Tribute
  • Добавлена криптографическая проверка подписи
  • Улучшена обработка ошибок безопасности

Фиксы реф программы by @yazhog in

  • При первоначальном заходе в боте юзерам предлагается ввести реферальный код, в случае если они без ссылки зашли в бота. Код там принимался только через /start, но наш новоиспеченный боец все поправил за что ему ♥️
  • Исправление начисления партнерки за первый платеж реферала

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

NewReleases is sending notifications on new releases.