JavaRush /Курсы /Модуль 4: FastAPI /Создание Telegram-клиента для взаимодействия с API

Создание Telegram-клиента для взаимодействия с API

Модуль 4: FastAPI
19 уровень , 2 лекция
Открыта

Telegram API предоставляет мощный способ взаимодействия с огромным набором функций. Это может быть всё: от получения истории сообщений и списка участников до автоматизации рутинных задач — например, отправки сообщений или модерирования чатов.

Прежде чем вы сможете приступить к работе, Telegram требует, чтобы вы зарегистрировали приложение. Взамен вы получите два ключа: API ID и API Hash. Эти ключи открывают доступ к вашим действиям через Telegram API. Подумаем о них как об уникальных идентификаторах вашего приложения.

Быстрая аналогия: представьте, что Telegram — это огромный клуб, а ваш API ID — ваш персональный жетон, который позволяет вам ходить внутрь клуба и заказывать коктейли от имени своего приложения.


Создание Telegram Application для получения API ID и API Hash

Прежде чем писать код, нам нужно зарегистрировать наше приложение в Telegram. Это один раз, но очень важно.

  1. Шаг 1: Напишите Telegram-боту @BotFather.
    Этот бот — "папа всех ботов", он поможет вам зарегистрировать свой Telegram Application. Ой, простите, это не для ботов. Для регистрации приложений вам нужно обратиться к @my.telegram.org.
  2. Шаг 2: Перейдите на my.telegram.org.
    Авторизуйтесь с помощью своего номера телефона. Telegram отправит код для подтверждения.
  3. Шаг 3: Зарегистрируйте своё приложение.
    Как только вы авторизуетесь, выберите API Development Tools. Затем предоставьте информацию о вашем приложении: название, короткое описание, платформу и цель использования.
  4. Шаг 4: Получите свой API ID и API Hash.
    После регистрации Telegram выдаст вам пару ключей: уникальный API ID и API Hash. Сохраняйте их в безопасности, как пароли. Шутка про "если кто-то узнает ваши ключи, он сможет вызывать API от вашего имени" тут уместна.

Создаём Telegram-клиента с Telethon

Теперь, когда у нас есть наши волшебные ключи, мы можем начать подключение к Telegram через Telethon. Это будет основа для работы со всеми функциями.

Установка зависимости

Если вы пропустили момент с установкой Telethon в прошлый раз, вот ваша вторая возможность:

pip install telethon

Совет: Если вы работаете в виртуальном окружении — молодцы! Если нет, скорее исправляйтесь!

Подключение к Telegram API

Настала пора написать первый реальный код. Мы создадим простую программу, которая подключается к вашему Telegram-аккаунту.


from telethon import TelegramClient

# Замените эти значения вашими собственными API ID и API Hash
api_id = 'ВАШ_API_ID'
api_hash = 'ВАШ_API_HASH'

# Имя для сохранения сессии (можно выбрать любое)
session_name = 'my_session'

# Создание клиента
client = TelegramClient(session_name, api_id, api_hash)

async def main():
    # Подключение к Telegram
    await client.start()

    # Ваше имя пользователя
    me = await client.get_me()
    print(f"Привет, {me.username}! Вы успешно подключились.")
    
    # Завершаем соединение
    await client.disconnect()

# Запускаем программу
client.loop.run_until_complete(main())

Вот и всё! Этот код:

  • Подключается к Telegram.
  • Авторизует ваш аккаунт.
  • Получает информацию о вашем пользователе.

Объяснение кода

  1. TelegramClient:
    Это класс из библиотеки Telethon, который служит мостом между вашим приложением и API Telegram. Мы передаём ему:
    • session_name: файл, в котором будет безопасно храниться информация о вашей сессии.
    • api_id и api_hash: ваши ключи из Telegram.
  2. Асинхронный метод start:
    Этот метод инициирует соединение с Telegram. Если вы используете свой аккаунт впервые, он попросит вас ввести номер телефона и код подтверждения.
  3. Метод get_me:
    Он возвращает ваши данные: имя пользователя, идентификатор и другую базовую информацию.
  4. client.loop.run_until_complete(main()):
    Позволяет запустить вашу асинхронную функцию main. Почему так? Потому что Python (ещё) не умеет магически запускать async функции сам, их нужно вручную "запускать".

Сохранение сессии: зачем?

Вам не придётся вводить код подтверждения каждый раз, когда клиент подключается. Вся информация о сессии сохраняется автоматически в файл (в нашем случае: my_session.session). Это удобно, но требует ответственного отношения. Не передавайте этот файл другим людям.

Если вы хотите работать с несколькими аккаунтами, просто используйте разные имена для сессий (например, my_session_user1 и my_session_user2).


Типичные проблемы и как их решить

  • Проблема 1: "API_ID_INVALID".
    Это сообщение вы увидите, если ошиблись при вводе api_id или api_hash. Проверьте их ещё раз.
  • Проблема 2: Код подтверждения не приходит.
    На этапе авторизации Telegram отправляет код вашему аккаунту через приложение Telegram. Проверьте свой Telegram, возможно, сообщение уже ждёт вас там.
  • Проблема 3: "ConnectionError".
    Эта ошибка возникает, если у вас проблемы с соединением к Telegram серверам. Удостоверьтесь, что вы не за VPN или брандмауэром, который блокирует доступ.

Практическое применение

Уже сейчас вы можете использовать написанный клиент для выполнения задач:

  • Узнать свой Telegram ID (например, для настройки бота).
  • Проверить авторизацию и сохранить сессию для будущих задач.
  • Подготовиться к созданию более сложных инструментов автоматизации.

# Попробуйте получить больше информации о своём аккаунте
async def main():
    await client.start()
    me = await client.get_me()

    print(f"ID: {me.id}")
    print(f"Username: {me.username}")
    print(f"Ваше имя: {me.first_name} {me.last_name}")
    print(f"Телефон: {me.phone}")

    await client.disconnect()

client.loop.run_until_complete(main())

Если вы видите свои данные — поздравляю, первый шаг сделан. В следующих лекциях мы научимся работать с каналами, чатами и создавать автоматические уведомления.

1
Задача
Модуль 4: FastAPI, 19 уровень, 2 лекция
Недоступна
Сохранение сессии
Сохранение сессии
1
Задача
Модуль 4: FastAPI, 19 уровень, 2 лекция
Недоступна
Обобщённая информация о пользователе
Обобщённая информация о пользователе
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ