Fix try
Browse files- akn/clientmulti_bot.py +71 -56
akn/clientmulti_bot.py
CHANGED
@@ -14,63 +14,78 @@ from akn import ids, gemini_bot_id
|
|
14 |
from pyrogram import __version__ as pyrogram_version
|
15 |
from box import Box
|
16 |
|
17 |
-
async def start_user()
|
18 |
-
|
19 |
-
|
20 |
-
"
|
21 |
-
"
|
22 |
-
|
|
|
|
|
23 |
}
|
24 |
-
}
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
|
75 |
async def start_magic_bot() -> None:
|
76 |
sessions = await db.get_all_magic_bot()
|
|
|
14 |
from pyrogram import __version__ as pyrogram_version
|
15 |
from box import Box
|
16 |
|
17 |
+
async def start_user():
|
18 |
+
try:
|
19 |
+
sessions = await db.session.find({
|
20 |
+
"user_client": {
|
21 |
+
"$elemMatch": {
|
22 |
+
"is_active": True,
|
23 |
+
"status": "approved"
|
24 |
+
}
|
25 |
}
|
26 |
+
}).to_list(length=None)
|
27 |
+
|
28 |
+
if not sessions:
|
29 |
+
LOGS.warning("No approved and active user sessions found.")
|
30 |
+
return
|
31 |
+
|
32 |
+
active_clients = []
|
33 |
+
|
34 |
+
for i, session_data in enumerate(sessions, 1):
|
35 |
+
user_client = session_data.get("user_client", [])
|
36 |
+
for user in user_client:
|
37 |
+
if not (user.get("status") == "approved" and user.get("is_active")):
|
38 |
+
continue
|
39 |
+
|
40 |
+
session_str = user.get("session_string")
|
41 |
+
user_id = user.get("user_id")
|
42 |
+
|
43 |
+
if not (session_str and user_id):
|
44 |
+
continue
|
45 |
+
|
46 |
+
try:
|
47 |
+
client = Client(
|
48 |
+
name=f"UserBot_{i}_{user_id}",
|
49 |
+
api_id=API_ID,
|
50 |
+
api_hash=API_HASH,
|
51 |
+
session_string=session_str,
|
52 |
+
plugins=dict(root="akn.Akeno"),
|
53 |
+
workdir="/tmp/akn_userbot",
|
54 |
+
app_version="UserBot/latest",
|
55 |
+
device_model="Anonymous",
|
56 |
+
system_version="Linux/Kernel-6.5",
|
57 |
+
sleep_threshold=30
|
58 |
+
)
|
59 |
+
await client.start()
|
60 |
+
me = await client.get_me()
|
61 |
+
if me.id != user_id:
|
62 |
+
raise ValueError(f"Session user_id mismatch (expected {user_id}, got {me.id})")
|
63 |
+
|
64 |
+
ids.append(user_id)
|
65 |
+
LOGS.info(f"✅ Started User #{i}: Name: {me.first_name}")
|
66 |
+
active_clients.append(client)
|
67 |
+
|
68 |
+
asyncio.create_task(
|
69 |
+
_check_session_health(client, user_id),
|
70 |
+
name=f"health_monitor_{user_id}"
|
71 |
+
)
|
72 |
+
|
73 |
+
except (
|
74 |
+
UserDeactivatedBan,
|
75 |
+
AuthKeyDuplicated,
|
76 |
+
UserDeactivated,
|
77 |
+
AuthKeyUnregistered,
|
78 |
+
SessionRevoked
|
79 |
+
) as e:
|
80 |
+
await _handle_dead_session(user_id, e)
|
81 |
+
continue
|
82 |
+
|
83 |
+
except Exception as e:
|
84 |
+
LOGS.error(f"⚠️ User #{i} failed: {type(e).__name__}: {str(e)}")
|
85 |
+
continue
|
86 |
+
|
87 |
+
except Exception as err:
|
88 |
+
LOGS.error(f"start_user() crashed: {type(err).__name__}: {err}")
|
89 |
|
90 |
async def start_magic_bot() -> None:
|
91 |
sessions = await db.get_all_magic_bot()
|