async def view_post_account_async(session_file, proxy_line, channel, post_id):
    logger.info(f"[view_post_account_async] Старт просмотра поста, акк: {session_file}, прокси: {proxy_line.split(':')[0]}:{proxy_line.split(':')[1]}, канал: {channel}, пост: {post_id}")

    # Из имени сессии пытаемся получить phone_number (например, session_file содержит номер)
    # Нужно уточнить формат session_file. Если это путь типа ".../new_session_19404241029.session"
    # тогда можно попытаться извлечь номер из имени файла
    phone_number = Path(session_file).stem  # например "new_session_19404241029"
    # Если в имени session_file есть лишнее, нужно его убрать.
    # Например, если имя формируется как "new_session_<phone>", можно так:
    # phone_number = phone_number.replace("new_session_", "")
    # на твоё усмотрение, вот пример:
    if phone_number.startswith("new_session_"):
        phone_number = phone_number[len("new_session_"):]

    # Путь к общему json-файлу с сессиями
    json_path = Path("all_api_id_phones.json")

    api_id, api_hash = get_api_credentials(json_path, phone_number)

    if not api_id or not api_hash:
       logger.error(f"[view_post_account_async] Не найдены api_id/api_hash для телефона {phone_number} в {json_path}")
       raise ValueError(f"Api credentials not found for phone {phone_number}")

    proxy_conf = get_proxy_config_by_phone(json_path, phone_number) or {}

    # Формируем прокси кортеж
    proxy = (
        ProxyType.SOCKS5,
        proxy_conf.get("host") or proxy_line.split(':')[0],
        int(proxy_conf.get("port") or proxy_line.split(':')[1]),
        True,  # rdns
        proxy_conf.get("username"),
        proxy_conf.get("password"),
    )

    print(proxy)

    client = OTClient(
        session=str(session_file),
        api_id=api_id,
        api_hash=api_hash,
        api=API.TelegramDesktop.Generate(),
        connection=ConnectionTcpAbridged,
        proxy=proxy,
        use_ipv6=True
    )

    await client.connect()
    logger.info(f"[view_post_account_async] Клиент подключен: {session_file}")

    try:
        entity = await get_channel_entity(client, channel)
        logger.debug(f"[view_post_account_async] Получена сущность канала для просмотра поста: {entity}")

        await safe_increment_views(client, entity, post_id)

    except errors.FloodError as fe:
        logger.error(f"[view_post_account_async] FloodError: {fe}", exc_info=True)
        raise
    except Exception as e:
        logger.error(f"[view_post_account_async] Ошибка просмотра поста: {e}", exc_info=True)
        raise
    finally:
        await client.disconnect()
        logger.debug(f"[view_post_account_async] Клиент отключен: {session_file}")

В этой функции нужно полностью убрать поиск строк из файла all_api_id_phones, чтобы вообще не было к нему обращений. Он используется в этом коде для определения прокси, прокси должен браться полностью рандомно из файла Proxies.txt


Вот пример:

proxies = load_proxies()
    random.shuffle(proxies)


def load_proxies():
    """Загружает список прокси из файла"""
    proxies = []
    try:
        with open(PROXIES_FILE, 'r') as f:
            for line in f:
                line = line.strip()
                if line and not line.startswith('#'):
                    parts = line.split(':')
                    if len(parts) == 4:
                        proxies.append({
                            "host": parts[0],
                            "port": int(parts[1]),
                            "username": parts[2],
                            "password": parts[3]
                        })
        return proxies
    except Exception as e:
        logger.error(f"Ошибка загрузки прокси: {e}")
        return []


Где PROXIES_FILE = "proxies.txt"