diff --git a/app/services/admin_notification_service.py b/app/services/admin_notification_service.py
index 7f0bca14..04c281da 100644
--- a/app/services/admin_notification_service.py
+++ b/app/services/admin_notification_service.py
@@ -707,4 +707,71 @@ class AdminNotificationService:
logger.error(f"Ошибка отправки уведомления о статусе панели Remnawave: {e}")
return False
+ async def send_subscription_update_notification(
+ self,
+ db: AsyncSession,
+ user: User,
+ subscription: Subscription,
+ update_type: str,
+ old_value: Any,
+ new_value: Any,
+ price_paid: int = 0
+ ) -> bool:
+ if not self._is_enabled():
+ return False
+
+ try:
+ referrer_info = await self._get_referrer_info(db, user.referred_by_id)
+
+ update_types = {
+ "traffic": ("📊 ИЗМЕНЕНИЕ ТРАФИКА", "трафик"),
+ "devices": ("📱 ИЗМЕНЕНИЕ УСТРОЙСТВ", "количество устройств"),
+ "servers": ("🌐 ИЗМЕНЕНИЕ СЕРВЕРОВ", "серверы")
+ }
+
+ title, param_name = update_types.get(update_type, ("⚙️ ИЗМЕНЕНИЕ ПОДПИСКИ", "параметры"))
+
+ message = f"""{title}
+
+ 👤 Пользователь: {user.full_name}
+ 🆔 Telegram ID: {user.telegram_id}
+ 📱 Username: @{user.username or 'отсутствует'}
+
+ 🔧 Изменение:
+ 📋 Параметр: {param_name}
+ 📉 Было: {self._format_value(old_value, update_type)}
+ 📈 Стало: {self._format_value(new_value, update_type)}"""
+
+ if price_paid > 0:
+ message += f"\n💰 Доплачено: {settings.format_price(price_paid)}"
+ else:
+ message += f"\n💸 Бесплатно"
+
+ message += f"""
+
+ 📅 Подписка действует до: {subscription.end_date.strftime('%d.%m.%Y %H:%M')}
+ 💰 Баланс после операции: {settings.format_price(user.balance_kopeks)}
+ 🔗 Рефер: {referrer_info}
+
+ ⏰ {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
+
+ def _format_value(self, value: Any, update_type: str) -> str:
+ if update_type == "traffic":
+ if value == 0:
+ return "♾ Безлимитный"
+ return f"{value} ГБ"
+ elif update_type == "devices":
+ return f"{value} устройств"
+ elif update_type == "servers":
+ if isinstance(value, list):
+ return f"{len(value)} серверов"
+ return str(value)
+ return str(value)
+