В Telethon (Python) возможно использование переменной после ввода "Пожалуйста, введите ваш телефон (или токен бота):"?"

Как можно изменить код таким образом, чтобы после запуска программы номер телефона автоматически считывался из файла valet.txt, а не запрашивался у пользователя? К тому же, необходимо, чтобы программа использовала самый последний номер телефона, содержащийся в этом файле, для авторизации в Telegram.
  • 1 января 2025 г. 10:23
Ответы на вопрос 2
Да, вы можете изменить код вашей программы на Python с использованием библиотеки Telethon, чтобы считывать номер телефона из файла `valet.txt`, а не запрашивать его у пользователя. Ниже приведен пример кода, который будет это делать:

```python
from telethon import TelegramClient

# Укажите ваши данные
api_id = 'YOUR_API_ID'
api_hash = 'YOUR_API_HASH'

# Считываем номер телефона из файла valet.txt
def get_last_phone_number(filename='valet.txt'):
    try:
        with open(filename, 'r') as file:
            lines = file.readlines()
            # Убираем возможные пробелы и пустые строки
            phone_numbers = [line.strip() for line in lines if line.strip()]
            
            # Если есть номера в файле, возвращаем последний
            if phone_numbers:
                return phone_numbers[-1]  # Берем последний номер
            else:
                raise ValueError("Файл пуст.")
    except FileNotFoundError:
        raise FileNotFoundError(f"Файл {filename} не найден.")
    except Exception as e:
        raise e

if __name__ == "__main__":
    # Получаем номер телефона
    phone_number = get_last_phone_number()

    # Создаем экземпляр клиента
    client = TelegramClient('session_name', api_id, api_hash)

    async def main():
        await client.start(phone=phone_number)
        print("Успешно авторизованы!")

    with client:
        client.loop.run_until_complete(main())
```

### Примечания:
1. Убедитесь, что в файле `valet.txt` находятся номера телефонов, каждый с новой строки.
2. Замените `YOUR_API_ID` и `YOUR_API_HASH` на ваши собственные значения, которые можно получить в [my.telegram.org](https://my.telegram.org).
3. Код будет пытаться считать последний номер телефона из файла и использовать его для авторизации. Если файла не существует или в нем нет телефонов, вы получите соответствующее сообщение об ошибке.
4. Используйте асинхронный контекстный менеджер для работы с клиентом Telethon, чтобы корректно управлять подключением.
Это что ли? 
if not await client.is_user_authorized():
            with open('valet.txt', 'r') as file:
                lines = file.readlines()
                if lines:
                    last_phone_number = lines[-1].strip()
                    print(f"Используем номер телефона из файла: {last_phone_number}")
                else:
                    last_phone_number = input("Введите ваш номер телефона (в формате +1234567890): ")

            await client.send_code_request(last_phone_number)
            code = input("Введите код из SMS: ")
            await client.sign_in(last_phone_number, code)
Похожие вопросы