mirror of
https://github.com/house-of-vanity/OutFleet.git
synced 2025-08-21 14:37:16 +00:00
Added tg bot autoconfirm
All checks were successful
Docker hub build / docker (push) Successful in 5m39s
All checks were successful
Docker hub build / docker (push) Successful in 5m39s
This commit is contained in:
@@ -515,13 +515,23 @@ class TelegramBotManager:
|
|||||||
selected_groups = []
|
selected_groups = []
|
||||||
from vpn.models_xray import SubscriptionGroup
|
from vpn.models_xray import SubscriptionGroup
|
||||||
|
|
||||||
|
logger.info(f"Processing approval for request {request_id}")
|
||||||
|
|
||||||
for row in query.message.reply_markup.inline_keyboard:
|
for row in query.message.reply_markup.inline_keyboard:
|
||||||
for button in row:
|
for button in row:
|
||||||
if button.callback_data and button.callback_data.startswith("sg_toggle_") and button.text.startswith("✅"):
|
if button.callback_data and button.callback_data.startswith("sg_toggle_"):
|
||||||
# Extract group_id from callback_data
|
if button.text.startswith("✅"):
|
||||||
group_id = button.callback_data.split('_')[2]
|
# Extract group_id from callback_data
|
||||||
group = await sync_to_async(SubscriptionGroup.objects.get)(id=group_id)
|
group_id = button.callback_data.split('_')[2]
|
||||||
selected_groups.append(group)
|
logger.info(f"Found selected group with ID {group_id}")
|
||||||
|
try:
|
||||||
|
group = await sync_to_async(SubscriptionGroup.objects.get)(id=group_id)
|
||||||
|
selected_groups.append(group)
|
||||||
|
logger.info(f"Added group '{group.name}' to selected groups")
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Failed to get subscription group {group_id}: {e}")
|
||||||
|
|
||||||
|
logger.info(f"Total selected groups: {len(selected_groups)}")
|
||||||
|
|
||||||
if not selected_groups:
|
if not selected_groups:
|
||||||
await query.edit_message_text("❌ Please select at least one subscription group")
|
await query.edit_message_text("❌ Please select at least one subscription group")
|
||||||
@@ -584,22 +594,39 @@ class TelegramBotManager:
|
|||||||
# Link user to request
|
# Link user to request
|
||||||
request.user = user
|
request.user = user
|
||||||
await sync_to_async(request.save)()
|
await sync_to_async(request.save)()
|
||||||
|
logger.info(f"Linked user {user.username} (ID: {user.id}) to request {request.id}")
|
||||||
|
|
||||||
# Assign subscription groups to user
|
# Assign subscription groups to user
|
||||||
|
logger.info(f"Assigning {len(selected_groups)} subscription groups to user {user.username}")
|
||||||
for subscription_group in selected_groups:
|
for subscription_group in selected_groups:
|
||||||
user_subscription, created = await sync_to_async(UserSubscription.objects.get_or_create)(
|
try:
|
||||||
user=user,
|
# Use a more explicit approach for async operations
|
||||||
subscription_group=subscription_group,
|
existing_sub = await sync_to_async(
|
||||||
defaults={'active': True}
|
UserSubscription.objects.filter(
|
||||||
)
|
user=user,
|
||||||
if created:
|
subscription_group=subscription_group
|
||||||
logger.info(f"Assigned subscription group '{subscription_group.name}' to user {user.username}")
|
).first
|
||||||
else:
|
)()
|
||||||
# Ensure it's active if it already existed
|
|
||||||
if not user_subscription.active:
|
if existing_sub:
|
||||||
user_subscription.active = True
|
# Update existing subscription
|
||||||
await sync_to_async(user_subscription.save)()
|
if not existing_sub.active:
|
||||||
logger.info(f"Re-activated subscription group '{subscription_group.name}' for user {user.username}")
|
existing_sub.active = True
|
||||||
|
await sync_to_async(existing_sub.save)()
|
||||||
|
logger.info(f"Re-activated subscription group '{subscription_group.name}' for user {user.username}")
|
||||||
|
else:
|
||||||
|
logger.info(f"Subscription group '{subscription_group.name}' already active for user {user.username}")
|
||||||
|
else:
|
||||||
|
# Create new subscription
|
||||||
|
new_sub = await sync_to_async(UserSubscription.objects.create)(
|
||||||
|
user=user,
|
||||||
|
subscription_group=subscription_group,
|
||||||
|
active=True
|
||||||
|
)
|
||||||
|
logger.info(f"Created new subscription for group '{subscription_group.name}' for user {user.username}")
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error assigning subscription group '{subscription_group.name}' to user {user.username}: {e}")
|
||||||
|
|
||||||
# Mark as approved
|
# Mark as approved
|
||||||
request.approved = True
|
request.approved = True
|
||||||
|
Reference in New Issue
Block a user