dfr / bot /client.py
UNUSUALxd's picture
Update bot/client.py
8173939 verified
Raw
History Blame Contribute Delete
3.79 kB
import os
import random
from pyrogram import Client
from pyrogram import enums
from bot.state import state, AccountState
from utils.logger import log
from bot.proxy_manager import proxy_mgr
# Native App UI Controller Hook Instantiation
bot: Client = Client(
"admin_bot",
api_id=int(os.environ.get("API_ID", 0)),
api_hash=os.environ.get("API_HASH", ""),
bot_token=os.environ.get("BOT_TOKEN", "")
)
async def init_clients(accounts_list):
"""
Initializes the fleet of MTProto Snipe Accounts with an absolute N+11 proxy routing matrix.
Account 0 and Account 11 run barebone on Local Space IP.
"""
await proxy_mgr.fetch_webshare()
await proxy_mgr.test_all_proxies()
healthy_proxies = proxy_mgr.get_best_proxies(len(proxy_mgr.proxies))
proxy_mgr.is_enabled = len(healthy_proxies) > 0
ios_versions = ["17.4.1", "17.4", "17.3.1", "17.3", "17.2.1"]
state["account_pool"].clear()
for i, acc_data in enumerate(accounts_list):
try:
proxy_config = None
proxy_display = "[No Proxy - Local IP]"
# Strict architectural proxy mapping framework
if i == 0 or i == 11:
proxy_config = None
proxy_display = "[No Proxy - Local IP Control Row]"
elif proxy_mgr.is_enabled and healthy_proxies:
p_idx = (i - 1) if i < 11 else (i - 12)
assigned_proxy = healthy_proxies[p_idx % len(healthy_proxies)]
proxy_config = {
"scheme": assigned_proxy["scheme"],
"hostname": assigned_proxy["hostname"],
"port": assigned_proxy["port"],
"username": assigned_proxy["username"],
"password": assigned_proxy["password"]
}
proxy_display = f"[Proxy Array #{p_idx}: {assigned_proxy['hostname']} ({assigned_proxy['ping']}ms)]"
assigned_ios = random.choice(ios_versions)
client = Client(
name=f"user_{i}",
session_string=acc_data["session_string"],
api_id=acc_data.get("api_id", int(os.environ.get("API_ID", 0))),
api_hash=acc_data.get("api_hash", os.environ.get("API_HASH", "")),
proxy=proxy_config,
in_memory=True,
no_updates=True, # ⚡ BANDWIDTH LOCKDOWN: Instructs MTProto edge nodes to block update pushing
device_model="iPhone 15 Pro Max",
system_version=assigned_ios,
app_version="10.12.0",
lang_code="en"
)
await client.start()
me = await client.get_me()
user_info = await client.get_users(me.id)
phone = me.phone_number or me.first_name or f"ID: {me.id}"
u_status = str(user_info.status).split(".")[-1] if user_info.status else "UNKNOWN"
at_risk = (user_info.status == enums.UserStatus.LONG_AGO)
acc_state = AccountState(
index=i,
client=client,
status="active",
checks_this_hour=0,
cooldown_until=None,
last_used=None,
phone=phone,
proxy=proxy_config,
user_status=u_status,
at_risk=at_risk
)
state["account_pool"].append(acc_state)
risk_str = "[AT RISK]" if at_risk else ""
log(f"✅ Account {i} ({phone}) initialized {proxy_display} {risk_str} [Spoofed as iOS {assigned_ios}]")
except Exception as e:
log(f"❌ Failed to initialize account {i}: {e}")