Client API в Telegram

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

Если вы не зарегистрированы в Telegram — самое время зарегистрироваться. Вы можете не пользоваться аккаунтом в повседневности, но для учёбы он необходим. Возможно, вам будет удобно работать через десктопную версию приложения, её можно скачать с официального сайта: https://telegram.org/.

API в Telegram

У мессенджера Telegram есть два API — Bot API и Client API.

  • Bot API предназначен для работы с ботами.
  • Client API позволяет управлять вашим аккаунтом: отправлять от вашего имени сообщения, вступать в группы или изменять информацию в своём профиле.

Начнём с Client API.

Управление аккаунтом через Client API

Для работы с Client API необходима аутентификация по токену, получить его можно на специальном сайте Telegram.

Получение токена для Client API

Зайдите на https://my.telegram.org и введите номер телефона, привязанный к вашему аккаунту:

Запустите Telegram: вам придёт код подтверждения для сайта, введите его в поле на сайте и нажмите кнопку Next.

В открывшемся окне нажмите на ссылку API development tools и введите данные для создания нового приложения. Заполните как минимум поля App titleShort name и укажите платформу: Web.

В следующем окне скопируйте и сохраните значения api_id и api_hash.

Готово! Эти идентификаторы вы перенесёте в код, они будут передаваться в Client API с каждым вашим запросом — и Client API опознает вас как владельца определённого аккаунта.

Программный клиент Telegram

Отправлять запросы к Client API можно через ваш Telegram-клиент на телефоне или на компьютере или через программный клиент.

Для работы с Client API существует несколько популярных Python-библиотек, которые эмулируют работу приложения. С чем-то подобным вы сталкивались в теме «Тестирование Django»: класс Client() в тестах эмулировал работу браузера, отправляя запросы и получая ответы от сервера.

Для создания программного клиента возьмём библиотеку pyrogram.

Создайте директорию /client_api, перейдите в неё, установите и активируйте виртуальное окружение, установите библиотеку pyrogram:

mkdir client_api  # Создаём директорию
cd client_api  # Переходим в эту директорию
python3 -m venv venv  # Создаём виртуальное окружение
. venv/bin/activate  # Активируем виртуальное окружение 
                     # Для Windows команда source venv/Scripts/activate
pip3 install pyrogram  # Устанавливаем библиотеку 

Создайте и откройте файл /client_api/main.py в текстовом редакторе, перенесите в него код:

from pyrogram import Client

api_id = <Ваш api_id>
api_hash = "<Ваш api_hash>"

with Client("my_account", api_id, api_hash) as app:
    # Первый параметр метода send_message — id (int) или имя (str) того пользователя,
    # которому будет отправлено сообщение.
    # Зарезервированное слово "me" означает ваш собственный аккаунт.
    app.send_message("me", "Привет, это я!") 

Сохраните файл и запустите его:

python3 main.py 

При первом запуске программы в командной строке будет запрошен номер телефона, на который зарегистрирован ваш Telegram-аккаунт. Введите номер в консоль, после этого на телефон или в Telegram придёт проверочный код. Скопируйте этот код и вставьте в командную строку. Эта процедура выполняется только один раз, после этого приложение будет зарегистрировано.

Из вашего приложения будет отправлено сообщение."me" — это зарезервированное слово, заменяющее ID аккаунта, для которого выдан токен. Следовательно, сообщение будет отправлено из вашего аккаунта в ваш аккаунт; оно отобразится во вкладке «Избранное» в вашем мессенджере.

Если изменить "me" на ID аккаунта вашего друга в Telegram, то сообщение уйдёт ему.

Получить ID по имени пользователя можно у справочного Telegram-бота @userinfobot. Чтобы найти этого бота, введите его имя в окно поиска над списком контактов в вашем мобильном или настольном клиенте Telegram.

Начните диалог с ботом: нажмите кнопку Start.

Для начала бот отправит вам информацию о вашем аккаунте: ID, имя (то, что указано в полях First и Last name) и язык.

Перешлите ему любое сообщение от человека, ID которого вам нужен. Чтобы переслать чьё-то сообщение — кликните по нему правой кнопкой мыши (если Telegram установлен на компьютере) и выберите вариант «Переслать сообщение» (Forward Message). Затем укажите, что сообщение следует переслать боту @userinfobot.

Если Telegram запущен на мобильном устройстве — вызовите меню долгим нажатием на сообщение и проделайте всё то же самое.

В ответ бот отправит информацию о пользователе: ID, имя (First name) и фамилию (Last name).

Список всех доступных методов библиотеки pyrogram доступен в документации.

Не увлекайтесь рассылкой сообщений через бота: в Client API есть лимит по количеству запросов. Если вы будете слишком часто отправлять сообщения, Telegram может принять вас за злоумышленника-спамера и забанить, лишить доступа к сервису. Telegram не раскрывает точных ограничений.

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





Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: