Задать вопрос
  • Почему telethon/pyrogram не отправляет код?

    @ganvas
    вот скрипт
    """
    Пример авторизации в Telegram через Telethon (2025-2026)
    Используйте этот скрипт для первичной авторизации
    """
    import asyncio
    from telethon import TelegramClient
    from telethon.errors import SessionPasswordNeededError

    # ==================== НАСТРОЙКИ ====================
    # Получите эти данные на https://my.telegram.org/apps
    API_ID = 12345678 # Замените на свой API ID
    API_HASH = 'your_api_hash_here' # Замените на свой API Hash
    PHONE = '+1234567890' # Замените на свой номер в формате +1234567890
    # ==================================================

    async def authorize():
    """Функция авторизации в Telegram"""

    print("=" * 70)
    print("АВТОРИЗАЦИЯ В TELEGRAM")
    print("=" * 70)
    print(f"API ID: {API_ID}")
    print(f"Телефон: {PHONE}")
    print("=" * 70)

    # Создаем клиент с параметрами устройства
    # Эти параметры помогают Telegram корректно отправить код авторизации
    client = TelegramClient(
    'my_session', # Имя файла сессии (будет создан .session файл)
    API_ID,
    API_HASH,
    device_model="Desktop", # Модель устройства
    system_version="Windows 10", # Версия ОС
    app_version="1.0", # Версия приложения
    lang_code="ru", # Язык интерфейса
    system_lang_code="ru-RU" # Системный язык
    )

    try:
    print("\n[1] Подключение к Telegram...")
    await client.start(phone=PHONE)

    # Если авторизация успешна, получаем информацию о пользователе
    me = await client.get_me()

    print("\n" + "=" * 70)
    print("✓ АВТОРИЗАЦИЯ УСПЕШНА!")
    print("=" * 70)
    print(f"Имя: {me.first_name} {me.last_name or ''}")
    print(f"Username: @{me.username if me.username else 'не установлен'}")
    print(f"ID: {me.id}")
    print(f"Телефон: {me.phone}")
    print("=" * 70)
    print(f"\nСессия сохранена в файл: my_session.session")
    print("Теперь код больше не потребуется при следующих запусках")

    except SessionPasswordNeededError:
    print("\n⚠ У аккаунта включена двухфакторная аутентификация (2FA)")
    password = input("Введите пароль облачного доступа: ")
    await client.sign_in(password=password)

    me = await client.get_me()
    print(f"\n✓ Авторизация успешна! Вы вошли как: {me.first_name}")

    except Exception as e:
    print(f"\n✗ Ошибка при авторизации: {e}")
    import traceback
    traceback.print_exc()

    finally:
    await client.disconnect()
    print("\n✓ Отключено от Telegram")

    if __name__ == '__main__':
    print("\n")
    print("╔════════════════════════════════════════════════════════════════════╗")
    print("║ TELEGRAM AUTHORIZATION EXAMPLE ║")
    print("╚════════════════════════════════════════════════════════════════════╝")
    print("\nПЕРЕД ЗАПУСКОМ:")
    print(" 1. Получите API ID и API Hash на https://my.telegram.org/apps")
    print(" 2. Укажите их в переменных API_ID и API_HASH")
    print(" 3. Укажите свой номер телефона в переменной PHONE")
    print("\nПРИ ЗАПУСКЕ:")
    print(" → Введите код из SMS или Telegram приложения")
    print(" → Код придет в: Настройки → Устройства или SMS")
    print(" → Если код не приходит - выйдите из Telegram на одном устройстве")
    print("\nСОВЕТЫ:")
    print(" • Удалите файл my_session.session перед повторной авторизацией")
    print(" • Не запрашивайте код слишком часто - это приведет к блокировке")
    print(" • Проверьте что API ключи созданы для правильного номера телефона")
    print("")

    asyncio.run(authorize())
    Написано
  • Почему telethon/pyrogram не отправляет код?

    @ganvas
    ВОТ НАШЕЛ РЕШЕНИЕ НА ТЕКУЩИЙ МОМЕНТ РАБОТАЕТ!

    # Решение проблемы с получением кода авторизации в Telegram

    ## Проблема
    При авторизации через Telethon/Pyrogram код не приходит ни в SMS, ни в приложение Telegram.

    ## Причины

    ### 1. API ключи привязаны к другому номеру
    - API ID и API Hash создаются на https://my.telegram.org
    - Они привязываются к номеру, которым вы были залогинены при их создании
    - **Решение**: Используйте тот же номер для авторизации или создайте новые API ключи

    ### 2. Telegram блокирует отправку кода
    - При частых запросах кода Telegram может временно заблокировать отправку
    - **Решение**: Подождите 30-60 минут перед повторной попыткой

    ### 3. Недостаточно параметров устройства
    - Telegram требует информацию об устройстве для отправки кода
    - **Решение**: Добавьте параметры устройства в TelegramClient

    ## Решение (работает в 2025-2026)

    ### Шаг 1: Добавьте параметры устройства

    ```python
    from telethon import TelegramClient

    client = TelegramClient(
    'session_name',
    api_id=YOUR_API_ID,
    api_hash='YOUR_API_HASH',
    device_model="Desktop", # Модель устройства
    system_version="Windows 10", # Версия ОС
    app_version="1.0", # Версия приложения
    lang_code="ru", # Язык
    system_lang_code="ru-RU" # Системный язык
    )
    ```

    ### Шаг 2: Выйдите из Telegram на одном устройстве
    - Откройте Telegram на телефоне
    - Зайдите в **Настройки → Устройства**
    - Завершите одну из активных сессий
    - Это помогает Telegram отправить код на новое устройство

    ### Шаг 3: Удалите старые файлы сессии
    ```bash
    # Windows PowerShell
    Remove-Item -Path "*.session" -Force

    # Linux/Mac
    rm -f *.session
    ```

    ### Шаг 4: Запустите скрипт заново
    После добавления параметров устройства код должен прийти в:
    - Приложение Telegram (раздел "Устройства")
    - SMS на указанный номер
    - Или через звонок

    ## Проверка API ключей

    1. Зайдите на https://my.telegram.org
    2. Проверьте каким номером вы залогинены
    3. Перейдите в "API development tools"
    4. Убедитесь что API ID и Hash верные
    5. Если нужен другой номер - разлогиньтесь и войдите нужным номером

    ## Дополнительные советы

    ### Если код всё равно не приходит:
    1. **Проверьте номер телефона** - формат должен быть: `XXXXXXXXX`
    2. **Проверьте что аккаунт не заблокирован** - попробуйте зайти через официальное приложение
    3. **Подождите** - Telegram может временно ограничивать отправку кодов
    4. **Используйте другой API ID** - возможно текущий заблокирован

    ### Альтернативный метод - принудительный SMS

    ```python
    from telethon import TelegramClient

    client = TelegramClient('session', api_id, api_hash,
    device_model="Desktop",
    system_version="Windows 10",
    app_version="1.0")

    await client.connect()

    # Первый запрос
    sent_code = await client.send_code_request(phone)

    # Ждем 30 секунд
    await asyncio.sleep(30)

    # Повторный запрос - должен прийти SMS
    sent_code2 = await client.send_code_request(phone, force_sms=True)
    ```

    ## Важно

    - **НЕ запрашивайте код слишком часто** - это приведет к временной блокировке
    - **Используйте официальные API ключи** - самостоятельно созданные на my.telegram.org
    - **Не используйте тестовые API ключи** из примеров кода - они не работают для production

    ## Итоговый рабочий код

    ```python
    from telethon import TelegramClient
    import asyncio

    api_id = YOUR_API_ID
    api_hash = 'YOUR_API_HASH'
    phone = '+YOUR_PHONE'

    async def main():
    client = TelegramClient(
    'my_session',
    api_id,
    api_hash,
    device_model="Desktop",
    system_version="Windows 10",
    app_version="1.0",
    lang_code="ru",
    system_lang_code="ru-RU"
    )

    await client.start(phone=phone)
    me = await client.get_me()
    print(f"Вошли как: {me.first_name}")

    await client.disconnect()

    asyncio.run(main())
    ```

    После этих изменений код авторизации должен приходить корректно.
    Написано