мне нужно чтобы при запуске софта все session string которые там загружены, автоматически запускались в сессию, но по факту что я имею это ошибка о том что нельзя авторизоваться в данную сессию, вот сам скрипт запуска сессий
accounts = {}
accounts_file = 'accounts.json'
async def start_all_accounts():
for phone in accounts:
session_string = accounts[phone]['session_string']
api_id = accounts[phone]['api_id']
api_hash = accounts[phone]['api_hash']
proxy = accounts[phone].get('proxy', None)
client = TelegramClient(StringSession(session_string), api_id, api_hash, proxy=proxy)
try:
await client.connect()
if not await client.is_user_authorized():
print("Is user authorized? ", await client.is_user_authorized()) # Новая строка
print(f"Session file {session_string} found for {phone}. But not authorized. Skipping.")
continue
else:
print(f"Session file {session_string} found for {phone}. Authorized. Starting client...")
await client.start(phone=phone)
except Exception as e:
print(f"Error starting client for {phone}: {e}")
if os.path.exists(accounts_file):
with open(accounts_file, 'r') as f:
accounts = json.load(f)
else:
accounts = {}
with open(accounts_file, 'w') as f:
json.dump(accounts, f)
asyncio.run(start_all_accounts())
Все аккаунты которые должны запускаться, входят в них через мой веб интерфейс, и через эту функцию
async def add_account_async(api_id, api_hash, phone, proxy, code=None, password=None, phone_code_hash=None):
if not api_id or not api_hash or not phone:
return None, None
if proxy:
host, port = proxy.split(':')
proxy_server = connection.ConnectionTcpMTProxyRandomizedIntermediate(
proxy=(host, int(port), "secret")
)
else:
proxy_server = None
session_string = accounts[phone]['session_string'] if phone in accounts else ""
string_session = StringSession(session_string)
client = TelegramClient(string_session, api_id, api_hash, proxy=proxy_server)
try:
await client.connect()
if not client.is_connected():
print("Не удалось установить соединение")
return None, None
if not await client.is_user_authorized():
if code is not None and password is not None and phone_code_hash is not None:
try:
await client.sign_in(phone, code, phone_code_hash=phone_code_hash, password=password)
except PhoneNumberUnoccupiedError:
pass
except SessionPasswordNeededError:
if not password:
return "password_required", None
else:
try:
await client.check_password(password)
except Exception as e:
print(f"Ошибка проверки пароля сессии: {e}")
return None, None
await client.sign_in(password=password)
except PhoneCodeInvalidError:
print("Invalid code entered. Please try again.")
return "invalid_code", phone_code_hash
except PhoneCodeExpiredError:
pass # Здесь не нужно отправлять новый код, так как мы уже отправили его раньше
else:
if phone_code_hash is None:
result = await client.send_code_request(phone)
return "code_required", result.phone_code_hash
else:
try:
await client.sign_in(phone, code, phone_code_hash=phone_code_hash)
except PhoneCodeInvalidError:
print("Invalid code entered. Please try again.")
return "invalid_code", phone_code_hash
session_string = client.session.save()
print("Авторизация успешна")
save_account(phone, api_id, api_hash, session_string, proxy)
finally:
await client.disconnect()
result = "success"
if code is not None and password is not None and phone_code_hash is not None:
result = None
return result, phone_code_hash
Тоесть мне пишет что все, авторизация успешна, все прошло удачно, а по факту после перезахода, я не могу запустить эти сессии, и мне нужно заново перезаходить вводя код и пароль, а по факту есть же session string