mirror of
https://github.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot.git
synced 2026-02-21 11:51:06 +00:00
Revert "Fix RemnaWave user identifier refresh during sync"
This commit is contained in:
@@ -93,49 +93,6 @@ class RemnaWaveService:
|
||||
self._config_error or "RemnaWave API не настроен"
|
||||
)
|
||||
|
||||
def _ensure_user_remnawave_uuid(
|
||||
self,
|
||||
user: "User",
|
||||
panel_uuid: Optional[str],
|
||||
uuid_map: Dict[str, "User"],
|
||||
) -> bool:
|
||||
"""Обновляет UUID пользователя, если он изменился в панели."""
|
||||
|
||||
if not panel_uuid:
|
||||
return False
|
||||
|
||||
current_uuid = getattr(user, "remnawave_uuid", None)
|
||||
if current_uuid == panel_uuid:
|
||||
return False
|
||||
|
||||
conflicting_user = uuid_map.get(panel_uuid)
|
||||
if conflicting_user and conflicting_user is not user:
|
||||
logger.warning(
|
||||
"♻️ Обнаружен конфликт UUID %s между пользователями %s и %s. Сбрасываем у старой записи.",
|
||||
panel_uuid,
|
||||
getattr(conflicting_user, "telegram_id", "?"),
|
||||
getattr(user, "telegram_id", "?"),
|
||||
)
|
||||
conflicting_user.remnawave_uuid = None
|
||||
conflicting_user.updated_at = datetime.utcnow()
|
||||
uuid_map.pop(panel_uuid, None)
|
||||
|
||||
if current_uuid:
|
||||
uuid_map.pop(current_uuid, None)
|
||||
|
||||
user.remnawave_uuid = panel_uuid
|
||||
user.updated_at = datetime.utcnow()
|
||||
uuid_map[panel_uuid] = user
|
||||
|
||||
logger.info(
|
||||
"🔁 Обновлен RemnaWave UUID пользователя %s: %s → %s",
|
||||
getattr(user, "telegram_id", "?"),
|
||||
current_uuid,
|
||||
panel_uuid,
|
||||
)
|
||||
|
||||
return True
|
||||
|
||||
@asynccontextmanager
|
||||
async def get_api_client(self):
|
||||
self._ensure_configured()
|
||||
@@ -1051,12 +1008,7 @@ class RemnaWaveService:
|
||||
)
|
||||
bot_users = bot_users_result.scalars().all()
|
||||
bot_users_by_telegram_id = {user.telegram_id: user for user in bot_users}
|
||||
bot_users_by_uuid = {
|
||||
user.remnawave_uuid: user
|
||||
for user in bot_users
|
||||
if getattr(user, "remnawave_uuid", None)
|
||||
}
|
||||
|
||||
|
||||
logger.info(f"📊 Пользователей в боте: {len(bot_users)}")
|
||||
|
||||
panel_users_with_tg = [
|
||||
@@ -1128,11 +1080,8 @@ class RemnaWaveService:
|
||||
logger.info(f"🔄 Обновлены поля {updated_fields} для пользователя {telegram_id}")
|
||||
await db.flush() # Сохраняем изменения без коммита
|
||||
|
||||
self._ensure_user_remnawave_uuid(
|
||||
db_user,
|
||||
panel_user.get('uuid'),
|
||||
bot_users_by_uuid,
|
||||
)
|
||||
if not db_user.remnawave_uuid:
|
||||
await update_user(db, db_user, remnawave_uuid=panel_user.get('uuid'))
|
||||
|
||||
if is_created:
|
||||
await self._create_subscription_from_panel_data(db, db_user, panel_user)
|
||||
@@ -1166,13 +1115,10 @@ class RemnaWaveService:
|
||||
else:
|
||||
# Если подписки нет, создаем новую
|
||||
await self._create_subscription_from_panel_data(db, db_user, panel_user)
|
||||
|
||||
self._ensure_user_remnawave_uuid(
|
||||
db_user,
|
||||
panel_user.get('uuid'),
|
||||
bot_users_by_uuid,
|
||||
)
|
||||
|
||||
|
||||
if not db_user.remnawave_uuid:
|
||||
await update_user(db, db_user, remnawave_uuid=panel_user.get('uuid'))
|
||||
|
||||
stats["updated"] += 1
|
||||
logger.debug(f"✅ Обновлён пользователь {telegram_id}")
|
||||
|
||||
@@ -1252,13 +1198,9 @@ class RemnaWaveService:
|
||||
subscription.remnawave_short_uuid = None
|
||||
subscription.subscription_url = ""
|
||||
subscription.subscription_crypto_link = ""
|
||||
|
||||
old_uuid = getattr(db_user, "remnawave_uuid", None)
|
||||
if old_uuid:
|
||||
bot_users_by_uuid.pop(old_uuid, None)
|
||||
|
||||
db_user.remnawave_uuid = None
|
||||
db_user.updated_at = datetime.utcnow()
|
||||
|
||||
|
||||
stats["deleted"] += 1
|
||||
logger.info(f"✅ Деактивирована подписка пользователя {telegram_id} (сохранен баланс)")
|
||||
|
||||
@@ -1445,16 +1387,8 @@ class RemnaWaveService:
|
||||
subscription.device_limit = device_limit
|
||||
logger.debug(f"Обновлен лимит устройств: {device_limit}")
|
||||
|
||||
new_short_uuid = panel_user.get('shortUuid')
|
||||
if new_short_uuid and subscription.remnawave_short_uuid != new_short_uuid:
|
||||
old_short_uuid = subscription.remnawave_short_uuid
|
||||
subscription.remnawave_short_uuid = new_short_uuid
|
||||
logger.debug(
|
||||
"Обновлен short UUID подписки пользователя %s: %s → %s",
|
||||
getattr(user, "telegram_id", "?"),
|
||||
old_short_uuid,
|
||||
new_short_uuid,
|
||||
)
|
||||
if not subscription.remnawave_short_uuid:
|
||||
subscription.remnawave_short_uuid = panel_user.get('shortUuid')
|
||||
|
||||
panel_url = panel_user.get('subscriptionUrl', '')
|
||||
if not subscription.subscription_url or subscription.subscription_url != panel_url:
|
||||
|
||||
Reference in New Issue
Block a user