раздел 02

Установка и первый вход

Чтобы начать, нужно три вещи: установить библиотеку, получить ключи приложения (api_id и api_hash) и один раз войти под своим номером. После этого вход сохранится в файл .session и повторно вводить код не придётся.

Шаги

1
Установить библиотеку
В терминале выполните pip install telethon. Нужен Python 3.
2
Получить api_id и api_hash
Зайдите на my.telegram.org, войдите под своим номером, откройте раздел API development tools (apps) и создайте приложение. Скопируйте api_id (число) и api_hash (строка).
3
Первый вход
Запустите скрипт. Telethon спросит номер телефона и пришлёт код прямо в Telegram - введите его. Если у аккаунта включена двухэтапная защита (2FA), попросит ещё и пароль.
4
Появится файл .session
После входа рядом со скриптом создастся файл с расширением .session. Дальше вход хранится в нём, код заново не нужен.

Установка

pip install telethon

Если планируете подключаться через прокси (актуально для запуска из России - см. раздел про риски), поставьте сразу и поддержку socks:

pip install telethon "python-socks[asyncio]"

Где взять api_id и api_hash

api_id и api_hash - это ключи вашего приложения. Telegram выдаёт их на my.telegram.org:

  1. Откройте my.telegram.org и войдите под своим номером (придёт код в Telegram).
  2. Зайдите в раздел API development tools.
  3. Заполните название и короткое имя приложения (можно любое, для себя).
  4. Скопируйте api_id (число) и api_hash (длинная строка).

Эти ключи привязаны к вашему аккаунту и нужны при каждом входе. Их, как и файл сессии, держат в секрете.

Минимальный скрипт первого входа

from telethon import TelegramClient

api_id = 0                 # ваш api_id с my.telegram.org (число)
api_hash = "YOUR_API_HASH" # ваш api_hash (строка)
phone = "+10000000000"     # ваш номер в международном формате

client = TelegramClient("my_session", api_id, api_hash)

async def main():
    await client.start(phone=phone)   # спросит код из Telegram, при 2FA - пароль
    me = await client.get_me()
    print("Вошли как:", me.first_name, "id:", me.id)

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

Первый аргумент TelegramClient("my_session", ...) - имя сессии. Telethon сохранит вход в файл my_session.session в текущей папке. Метод client.start() сам проведёт всю авторизацию: спросит код, а при включённой 2FA - пароль.

Куда прятать ключи

Не вписывайте api_id, api_hash и номер прямо в код, который потом попадёт в git. Держите их в переменных окружения или в .env:

import os
from telethon import TelegramClient

api_id = int(os.environ["TG_API_ID"])
api_hash = os.environ["TG_API_HASH"]

client = TelegramClient("my_session", api_id, api_hash)