mirror of
https://github.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot.git
synced 2026-03-01 15:52:30 +00:00
@@ -442,6 +442,8 @@ async def add_subscription_servers(
|
||||
server_squad_ids: List[int],
|
||||
paid_prices: List[int] = None
|
||||
) -> Subscription:
|
||||
await db.refresh(subscription)
|
||||
|
||||
if paid_prices is None:
|
||||
months_remaining = get_remaining_months(subscription.end_date)
|
||||
paid_prices = []
|
||||
@@ -458,7 +460,7 @@ async def add_subscription_servers(
|
||||
|
||||
for i, server_id in enumerate(server_squad_ids):
|
||||
subscription_server = SubscriptionServer(
|
||||
subscription_id=subscription.id,
|
||||
subscription_id=subscription.id,
|
||||
server_squad_id=server_id,
|
||||
paid_price_kopeks=paid_prices[i] if i < len(paid_prices) else 0
|
||||
)
|
||||
@@ -467,7 +469,7 @@ async def add_subscription_servers(
|
||||
await db.commit()
|
||||
await db.refresh(subscription)
|
||||
|
||||
logger.info(f"🌍 К подписке {subscription.id} добавлено {len(server_squad_ids)} серверов с ценами: {paid_prices}")
|
||||
logger.info(f"🌐 К подписке {subscription.id} добавлено {len(server_squad_ids)} серверов с ценами: {paid_prices}")
|
||||
return subscription
|
||||
|
||||
async def get_server_monthly_price(
|
||||
|
||||
@@ -28,23 +28,15 @@ async def generate_unique_referral_code(db: AsyncSession, telegram_id: int) -> s
|
||||
return f"ref{timestamp}"
|
||||
|
||||
|
||||
async def mark_user_as_had_paid_subscription(db: AsyncSession, user_id: int) -> bool:
|
||||
async def mark_user_as_had_paid_subscription(db: AsyncSession, user: User) -> bool:
|
||||
try:
|
||||
from app.database.crud.user import get_user_by_id
|
||||
from sqlalchemy import update
|
||||
|
||||
user = await get_user_by_id(db, user_id)
|
||||
if not user:
|
||||
logger.error(f"Пользователь {user_id} не найден")
|
||||
return False
|
||||
|
||||
if user.has_had_paid_subscription:
|
||||
logger.debug(f"Пользователь {user_id} уже отмечен как имевший платную подписку")
|
||||
logger.debug(f"Пользователь {user.id} уже отмечен как имевший платную подписку")
|
||||
return True
|
||||
|
||||
await db.execute(
|
||||
update(User)
|
||||
.where(User.id == user_id)
|
||||
.where(User.id == user.id)
|
||||
.values(
|
||||
has_had_paid_subscription=True,
|
||||
updated_at=datetime.utcnow()
|
||||
@@ -52,11 +44,11 @@ async def mark_user_as_had_paid_subscription(db: AsyncSession, user_id: int) ->
|
||||
)
|
||||
|
||||
await db.commit()
|
||||
logger.info(f"✅ Пользователь {user_id} отмечен как имевший платную подписку")
|
||||
logger.info(f"✅ Пользователь {user.id} отмечен как имевший платную подписку")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка отметки пользователя {user_id} как имевшего платную подписку: {e}")
|
||||
logger.error(f"Ошибка отметки пользователя {user.id} как имевшего платную подписку: {e}")
|
||||
try:
|
||||
await db.rollback()
|
||||
except Exception as rollback_error:
|
||||
|
||||
Reference in New Issue
Block a user