🔄 Обновление интеграции с Remnawave API
🔐 Расширенная поддержка авторизации
- Добавлена поддержка X-Api-Key заголовка для стандартной авторизации
- Поддержка Basic Authentication через X-Api-Key заголовок
- Автоматическое определение типа авторизации на основе конфигурации
- Полная обратная совместимость с существующими Bearer token авторизациями
⚙️ Новые параметры конфигурации
# Новые переменные окружения
REMNAWAVE_USERNAME= # Имя пользователя для Basic Auth
REMNAWAVE_PASSWORD= # Пароль для Basic Auth
REMNAWAVE_AUTH_TYPE=api_key # Тип авторизации: api_key или basic_auth
🛠️ Улучшения API клиента
- Новый метод
_prepare_auth_headers()для гибкого формирования заголовков - Поддержка множественных типов авторизации в одном запросе
- Улучшенное логирование типа используемой авторизации
- Централизованное управление авторизацией через
get_remnawave_auth_params()
📚 Поддерживаемые методы авторизации
| Метод | Заголовок | Описание |
|---|---|---|
| API Key | X-Api-Key: your_api_key | Стандартный API ключ |
| Bearer Token | Authorization: Bearer token | Классический Bearer token |
| Basic Auth | X-Api-Key: Basic base64(user:pass) | Basic Authentication |
| eGames Cookies | Cookies в формате key:value | Для панелей eGames |
🛠️ Критические исправления стабильности
🚨 Исправлена критическая ошибка с устаревшими callback queries
- Проблема: При перезапуске бота пользователи могли нажимать на inline кнопки, что приводило к ошибке
TelegramBadRequest: query is too oldи падению бота - Решение: Реализована двухуровневая система защиты:
GlobalErrorMiddlewareдля глобальной обработки ошибок Telegram API- Улучшенный декоратор
@error_handlerдля дополнительной защиты
🛡️ Многоуровневая система защиты от ошибок
- Middleware-уровень: перехватывает ошибки до обработки хендлерами
- Декоратор-уровень: дополнительная защита в критических местах
- Автоматическое игнорирование устаревших запросов с подробным логированием
🔧 Обработка дополнительных типов ошибок Telegram API
"message is not modified"- попытка изменить неизмененное сообщение"bot was blocked by the user"- корректное логирование блокировки"user is deactivated"- обработка деактивированных аккаунтов"chat not found"/"message not found"- защита от удаленных чатов
🌐 Исправления Webhook сервера
🔧 Исправлено
- Проблема запуска: Исправлена проблема с запуском webhook сервера при отключенном Tribute но включенном CryptoBot
- Healthcheck: Теперь
/healthна порту 8081 работает корректно независимо от состояния Tribute - Логика запуска: Webhook сервер запускается если включен любой из платежных методов (Tribute ИЛИ CryptoBot)
📈 Улучшено
- Логирование: Добавлено более детальное логирование активных webhook endpoints
- Мониторинг: Улучшено отображение статуса запущенных сервисов в логах
- Производительность: Устранены избыточные исключения, улучшающие общую производительность
📋 Технические изменения
🆕 Новые файлы
app/middlewares/global_error.py- глобальный middleware для обработки ошибок- Обновлена логика авторизации в
remnawave_api.py
🔄 Обновленные файлы
app/bot.py- добавленGlobalErrorMiddlewareпервым в цепочке middlewareapp/utils/decorators.py- улучшена обработка ошибок в декораторе@error_handlermain.py- изменена логика запуска webhook:webhook_needed = settings.TRIBUTE_ENABLED or settings.is_cryptobot_enabled()
🔍 Улучшения логирования и мониторинга
- Улучшено логирование устаревших callback queries с информацией о пользователе
- Добавлены debug-сообщения для отслеживания работы системы обработки ошибок
- Разделение уровней логирования: warning для нормальных ситуаций, error для проблем
- Более информативные сообщения об ошибках авторизации в Remnawave API
🚀 Совместимость и миграция
✅ Полная обратная совместимость
- Все существующие хендлеры продолжают работать без изменений
- Существующие конфигурации Remnawave продолжат работать без изменений
- Не требуется изменение пользовательского кода
- Поддержка всех типов панелей Remnawave
📝 Инструкции по обновлению
Для существующих установок
Никаких изменений не требуется - все существующие конфигурации продолжат работать.
Для новых панелей с X-Api-Key авторизацией
# Обычный API ключ REMNAWAVE_AUTH_TYPE=api_key REMNAWAVE_API_KEY=your_api_key_hereBasic Authentication
REMNAWAVE_AUTH_TYPE=basic_auth
REMNAWAVE_USERNAME=your_username
REMNAWAVE_PASSWORD=your_password
Для панелей eGames
Существующая конфигурация продолжает работать:
REMNAWAVE_SECRET_KEY=XXXXXXX:DDDDDDDD
Результат обновления: Значительно повышена стабильность работы бота, расширены возможности интеграции с различными типами панелей Remnawave, улучшена система мониторинга и диагностики.
What's Changed
- X-Api-key заголовки + TinyAuth by @Fr1ngg in #65
- Исправлена ошибок с устаревшими callback queries при перезапуске бота by @Fr1ngg in #66
Full Changelog: v2.3.0...v2.3.1