From caeafc7abd820b742ec57bc70cd56642e2b4cea4 Mon Sep 17 00:00:00 2001 From: Egor Date: Mon, 2 Feb 2026 03:10:27 +0300 Subject: [PATCH] Update blocked_users_service.py --- app/services/blocked_users_service.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/services/blocked_users_service.py b/app/services/blocked_users_service.py index ea4a2830..d17b7e0c 100644 --- a/app/services/blocked_users_service.py +++ b/app/services/blocked_users_service.py @@ -19,9 +19,11 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload from app.database.models import ( + CabinetRefreshToken, PromoCodeUse, ReferralEarning, Subscription, + SubscriptionEvent, SubscriptionServer, Transaction, User, @@ -97,6 +99,8 @@ class BlockedUsersService: CHECK_DELAY_SECONDS: float = 0.05 # Максимальное количество параллельных проверок MAX_CONCURRENT_CHECKS: int = 10 + # Задержка между API запросами к Remnawave (rate limit protection) + API_DELAY_SECONDS: float = 0.15 def __init__(self, bot: Bot): self.bot = bot @@ -283,6 +287,8 @@ class BlockedUsersService: await db.execute(delete(ReferralEarning).where(ReferralEarning.user_id == user.id)) await db.execute(delete(ReferralEarning).where(ReferralEarning.referral_id == user.id)) await db.execute(delete(PromoCodeUse).where(PromoCodeUse.user_id == user.id)) + await db.execute(delete(SubscriptionEvent).where(SubscriptionEvent.user_id == user.id)) + await db.execute(delete(CabinetRefreshToken).where(CabinetRefreshToken.user_id == user.id)) # Обнуляем referred_by_id у рефералов этого пользователя referrals_query = select(User).where(User.referred_by_id == user.id) @@ -355,6 +361,8 @@ class BlockedUsersService: result.deleted_from_remnawave += 1 else: result.errors.append(f'Ошибка удаления {user_result.telegram_id} из Remnawave') + # Задержка для избежания rate limit + await asyncio.sleep(self.API_DELAY_SECONDS) if action in (BlockedUserAction.DELETE_FROM_DB, BlockedUserAction.DELETE_BOTH): success = await self.delete_user_from_db(db, user_result.user_id)