diff --git a/app/services/admin_notification_service.py b/app/services/admin_notification_service.py index 3e64a903..7f0bca14 100644 --- a/app/services/admin_notification_service.py +++ b/app/services/admin_notification_service.py @@ -130,6 +130,78 @@ class AdminNotificationService: except Exception as e: logger.error(f"Ошибка отправки уведомления о покупке: {e}") return False + + async def send_version_update_notification( + self, + current_version: str, + latest_version, + total_updates: int + ) -> bool: + """Отправляет уведомление о новых обновлениях""" + if not self._is_enabled(): + return False + + try: + if latest_version.prerelease: + update_type = "🧪 ПРЕДВАРИТЕЛЬНАЯ ВЕРСИЯ" + type_icon = "🧪" + elif latest_version.is_dev: + update_type = "🔧 DEV ВЕРСИЯ" + type_icon = "🔧" + else: + update_type = "📦 НОВАЯ ВЕРСИЯ" + type_icon = "📦" + + description = latest_version.short_description + if len(description) > 200: + description = description[:197] + "..." + + message = f"""{type_icon} {update_type} ДОСТУПНА + + 📦 Текущая версия: {current_version} + 🆕 Новая версия: {latest_version.tag_name} + 📅 Дата релиза: {latest_version.formatted_date} + + 📝 Описание: + {description} + + 🔢 Всего доступно обновлений: {total_updates} + 🔗 Репозиторий: https://github.com/{getattr(self, 'repo', 'fr1ngg/remnawave-bedolaga-telegram-bot')} + + ℹ️ Для обновления перезапустите контейнер с новым тегом или обновите код из репозитория. + + ⚙️ Автоматическая проверка обновлений • {datetime.now().strftime('%d.%m.%Y %H:%M:%S')}""" + + return await self._send_message(message) + + except Exception as e: + logger.error(f"Ошибка отправки уведомления об обновлении: {e}") + return False + + async def send_version_check_error_notification( + self, + error_message: str, + current_version: str + ) -> bool: + if not self._is_enabled(): + return False + + try: + message = f"""⚠️ ОШИБКА ПРОВЕРКИ ОБНОВЛЕНИЙ + + 📦 Текущая версия: {current_version} + ❌ Ошибка: {error_message} + + 🔄 Следующая попытка через час. + ⚙️ Проверьте доступность GitHub API и настройки сети. + + ⚙️ Система автоматических обновлений • {datetime.now().strftime('%d.%m.%Y %H:%M:%S')}""" + + return await self._send_message(message) + + except Exception as e: + logger.error(f"Ошибка отправки уведомления об ошибке проверки версий: {e}") + return False async def send_balance_topup_notification( self,