Как узнать свой api telegram

от admin

Создание своего клиента Telegram

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

В целях обеспечения совместимости и безопасности в экосистеме, все сторонние клиенты должны соответствовать Условиям использования API.

Получение api_id

Для получения API id и возможности разработать собственный клиент на основе Telegram API нужно сделать следующее:

  • Зарегистрироваться в Telegram, используя любой клиент.
  • Авторизоваться в Telegram по ссылке: https://my.telegram.org.
  • Перейти по ссылке ‘API development tools’ и заполнить форму.
  • Будут получены адреса и параметры api_id и api_hash, необходимые для авторизации пользователя.
  • На данный момент к любому номеру может быть привязан только один api_id.

Важные оповещения для разработчиков будут присылаться по указанному телефону, поэтому рекомендуется использовать актуальный номер, к которому привязан активный аккаунт Telegram.

Использование открытого исходного кода Telegram

Открытый исходный код Telegram доступен для всех. К нему также прилагается пример API id, использование которого ограничено и возможно лишь для серверной части. Его нельзя применять в приложениях для конечного пользователя – попытки использовать этот API id для любых целей, кроме тестирования, вызовут ошибку API_ID_PUBLISHED_FLOOD на стороне пользователей. Поэтому перед выпуском клиента необходимо получить собственный API id.

Для соответствия лицензии GNU GPL разработчику также необходимо выложить в открытый доступ исходный код своего приложения.

Сайт про Telegram на русском (неофициальный).

Здесь собраны приложения на базе MTProto, переведена некоторая документация с официального сайта, а также работает Webogram.

Creating your Telegram Application

We welcome all developers to use our API and source code to create Telegram-like messaging applications on our platform free of charge.

In order to ensure consistency and security across the Telegram ecosystem, all third-party client apps must comply with the API Terms of Service.

Obtaining api_id

In order to obtain an API id and develop your own application using the Telegram API you need to do the following:

  • Sign up for Telegram using any application.
  • Log in to your Telegram core: https://my.telegram.org.
  • Go to «API development tools» and fill out the form.
  • You will get basic addresses as well as the api_id and api_hash parameters required for user authorization.
  • For the moment each number can only have one api_id connected to it.

We will be sending important developer notifications to the phone number that you use in this process, so please use an up-to-date number connected to your active Telegram account.

Using the api_id

Before using the MTProto Telegram API, please note that all API client libraries are strictly monitored to prevent abuse.

If you use the Telegram API for flooding, spamming, faking subscriber and view counters of channels, you will be banned forever.

Due to excessive abuse of the Telegram API, all accounts that sign up or log in using unofficial Telegram API clients are automatically put under observation to avoid violations of the Terms of Service.

If you didn’t violate the Terms of Service but your account does get banned after using the API, write to recover@telegram.org explaining what you intend to do with the API, asking to unban your account.
Please note that emails are checked by a human, so automatically generated emails will be detected and banned.

Using Telegram’s open source code

Everyone is welcome to use our open source code. We have included a sample API id with the code. This API id is limited on the server side and is not suitable for apps released to end-users — using it for anything but testing purposes will result in the API_ID_PUBLISHED_FLOOD error for your users. It is necessary that you obtain your own API id before you publish your app.

Please remember to publish your code as well in order to comply with the GNU GPL licences.

Телеграм API id и API hash

Данная инструкция предназначена для первоначальной настройки программы Telegram-Spam-Master!

Зачем это нужно? Это действие необходимо по нескольким причинам: 1) Для того чтобы программа Telegram-Spam-Master могла работать; 2) Снизить вероятность банов Ваших аккаунтов в Telegram

  1. Сначала перейдите на my.telegram.org
  2. В поле Your Phone Number введите Ваш номер телефона (рекомендуется использовать номер телефона Вашего фейк-аккаунта во избежание блокировки основного номера) и нажмите Next. На этот номер будет отправлено сообщение в Телеграм, который нам понадобится в следующем пункте.
  3. После этого у Вас появится поле Confirmation code. В это поле Вам необходимо вставить код, который Вы получите в приложении Telegram На телефоне или компьютере и нажать на кнопку Sign In.
  4. Далее нажимем на ссылку «API development tools«
  5. Вам предложат создать новое приложение.
    Заполняем поля по примеру:
    App title: Любое название на английском языке
    Shortname: Любая строчка на английском языке без пробелов! Длина от 5 до 32 символа
    Url: Ссылка на любой сайт, который не является популярным
    Platform: Desktop
    Description: Придумайте любое описание
  6. Нажимаем «Create application»
    Если на этом этапе Вы увидите окно с надписью «ERROR«, попробуйте отключить в Вашем браузере плагины-блокировщики рекламы или блокировщики сторонних файлов Cookie
    Если все пройдет хорошо, то Вы увидите страницу похожую на скриншот ниже!
  7. Поля App api_id и App api_hash копируем в программу Telegram-Spam-Master соответственно!

1) Открываем Телеграм клиент на своем компьютере!

2) Ищем в поиске @PyGetssApiBot (можете поискать любой другой по запросу «Telegram API ID HASH«)

3) Запускаем бота введя /start или нажав соответствующую кнопку

4) Бот может попросить Вас подписаться на какой-то паблик. Подписываемся! Когда мы закончим работу с ботом, можно будет отписаться!

5) Нажимаем кнопку «Get Api ID and Api Hash»

6) Вводим номер телефона купленного фейк-аккаунта

7) В телеграм-клиент этого фейк-аккаунта придет код. Копируем его и отправляем боту!

8) После отправки кода, бот выдаст Вам APP ID и API HASH! (смотри скриншот) Копируем их в соответствующие поля в программе Telegram-Spam-Master

Введение в Telegram API

Telegramэто сервис обмена мгновенными сообщениями, такой же, как WhatsApp, Facebook Messenger и WeChat. В последние годы он приобрел популярность по разным причинам: его некоммерческий характер, кроссплатформенная поддержка, обещания безопасности¹, и этооткрытые API,

В этом посте мы будем использоватьТелемарафонклиентская библиотека Python для Telegram API для подсчета количества сообщений в каждом из наших чатов Telegram.

API Telegram

Наиболее известным из API Telegram является его API-интерфейс Bot, API-интерфейс на основе HTTP для разработчиков, взаимодействующих с бот-платформой. Bot API позволяет разработчикам управлять ботами Telegram, например, получать сообщения и отвечать другим пользователям.

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

Telegram API намного сложнее, чем Bot API. Вы можете получить доступ к API-интерфейсу бота через HTTP-запросы со стандартными полезными нагрузками JSON, формы или строки запроса, в то время как Telegram API использует собственный формат полезной нагрузки и протокол шифрования.

Telegram API

MTProto — это специальная схема шифрования, которая поддерживает обещания Telegram о безопасности Это протокол прикладного уровня, который пишет напрямую в базовый транспортный поток, такой как TCP или UDP, а также HTTP. К счастью, нам не нужно заниматься этим непосредственно при использовании клиентской библиотеки. С другой стороны, нам нужно понимать формат полезной нагрузки, чтобы выполнять вызовы API.

Тип Язык

Telegram API основан на RPC, поэтому взаимодействие с API включает отправку полезной нагрузки, представляющей вызов функции, и получение результата. Например, чтение содержимого разговора включает вызов messages.getMessage функция с необходимыми параметрами и получения messages.Messages в ответ.

Язык типов, или TL, используется для представления типов и функций, используемых API. Схема TL — это набор доступных типов и функций. В MTProto конструкции TL будутсериализовано в двоичную формуперед внедрением в качестве полезной нагрузки сообщений MTProto, однако мы можем оставить это для клиентской библиотеки, которую мы будем использовать.

Пример TL-схемы (сначала объявляются типы, за которыми следуют функции с разделителем):

Вызов функции TL и результат с использованием функций и типов из вышеуказанной схемы TL, а также эквивалентное двоичное представление (изофициальная документация):

Слои TL-схемы

Версия Telegram API имеет версии с использованием слоев TL-Schema; каждый слой имеет уникальную TL-схему. Веб-сайт Telegram содержит текущую TL-схему и предыдущие уровни вhttps://core.telegram.org/schema,

Или, похоже, получается, что хотя последний уровень TL-схемы на веб-сайте Telegram — это уровень 23, на момент написания последнего уровня фактически уже был уровень 71. Вы можете найти последнюю версию TL-схемыВотвместо.

Начиная

Создание приложения Telegram

Вам нужно будет получить api_id а также api_hash взаимодействовать с Telegram API. Следуйте инструкциям из официальной документации здесь:https://core.telegram.org/api/obtaining_api_id,

Вам придется посетитьhttps://my.telegram.org/войдите под своим номером телефона и кодом подтверждения, который будет отправлен в Telegram, и заполните форму в разделе «Инструменты разработки API», указав название приложения и короткое имя. После этого вы можете найти свой api_id а также api_hash в том же месте.

Кроме того, в тех же инструкциях упоминается, что вы можете использовать образцы учетных данных, которые можно найти в исходных кодах Telegram для тестирования. Для удобства я буду использовать учетные данные, которые я нашел вИсходный код Telegram Desktop на GitHubв примере кода здесь.

Читать:
Как передать бота telegram другому человеку

Установка Telethon

Мы будем использовать Telethon для связи с Telegram API. Telethon — это клиентская библиотека Python 3 (что означает, что вам придется использовать Python 3) для API Telegram, который будет обрабатывать все специфичные для протокола задачи для нас, поэтому нам нужно только знать, какие типы использовать и какие функции выполнять вызов.

Вы можете установить Telethon с pip :

Использовать pip соответствует вашему интерпретатору Python 3; это может быть pip3 вместо. (Случайно: недавно была выпущена Ubuntu 17.10, и она использует Python 3 в качестве установки Python по умолчанию.)

Создание клиента

Прежде чем вы сможете начать взаимодействовать с Telegram API, вам нужно создать клиентский объект с вашим api_id а также api_hash и подтвердите его с вашим номером телефона. Это похоже на вход в Telegram на новом устройстве; вы можете представить этого клиента как еще одно приложение Telegram

Ниже приведен код для создания и аутентификации объекта клиента, модифицированный из документации Telethon:

Как упоминалось ранее, api_id а также api_hash выше взяты из исходного кода Telegram Desktop. Введите свой номер телефона в phone переменная.

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

Если предыдущей сессии не было, выполнение этого кода приведет к отправке вам кода авторизации через Telegram. Если вы включили двухэтапное подтверждение в своей учетной записи Telegram, вам также потребуется ввести пароль Telegram. После того, как вы аутентифицировались один раз и .session файл сохранен, вам не придется повторно проходить аутентификацию, пока не истечет время сеанса, даже если вы снова запустите скрипт.

Если клиент был создан и аутентифицирован успешно, объект, представляющий себя, должен быть напечатан на консоли. Это будет похоже на (эллипсы … означает, что какой-то контент был пропущен)

Теперь вы можете использовать этот клиентский объект, чтобы начать делать запросы к Telegram API.

Работа с Telegram API

Проверка TL-схемы

Как упоминалось ранее, использование Telegram API включает вызов доступных функций в TL-схеме. В этом случае мы заинтересованы в messages.GetDialogs функция. Мы также должны принять к сведению соответствующие типы в аргументах функции. Вот подмножество TL-схемы, которую мы будем использовать для выполнения этого запроса:

Это не легко читать, но учтите, что messages.getDialogs функция вернет messages.Dialogs , который является абстрактным типом для messages.dialogs или messages.dialogsSlice объект, который оба содержат векторы Dialog , Message , Chat а также User ,

Использование документации Telethon

К счастью, документация Telethon дает более подробную информацию о том, как мы можем вызвать эту функцию. Отhttps://lonamiwebs.github.io/Telethon/index.html, если вы введете getdialogs в поле поиска, вы увидите результат для метода с именем GetDialogsRequest (Функции TL-схемы представлены *Request объекты в Telethon).

Документация для GetDialogsRequest указывает тип возвращаемого значения для метода, а также чуть более подробную информацию о параметрах. Кнопка «Копировать импорт в буфер обмена» особенно полезна, когда мы хотим использовать этот объект, как сейчас.

messages.getDialogs функция, а также конструктор для GetDialogsRequest занимает offset_peer аргумент типа InputPeer , В документации для GetDialogsRequest, нажмите через InputPeer ссылка, чтобы увидеть страницу с описанием конструкторов и методов, принимающих и возвращающих этот тип.

Так как мы хотим создать InputPeer объект для использования в качестве аргумента для нашего GetDialogsRequest нас интересуют конструкторы для InputPeer , В этом случае мы будем использовать InputPeerEmpty конструктор. Нажмите еще раз на страницу для InputPeerEmpty и скопируйте его путь импорта, чтобы использовать его. InputPeerEmpty Конструктор не принимает аргументов.

Сделать запрос

Вот наш законченный GetDialogsRequest и как получить его результат, передав его нашему авторизованному клиентскому объекту:

В моем случае я получил обратно DialogsSlice объект, содержащий список диалогов, сообщений, чатов и пользователей, как мы и ожидали на основе TL-схемы:

Получение DialogsSlice вместо того Dialogs означает, что не все мои диалоги были возвращены, но count Атрибут говорит мне, сколько диалогов у меня всего. Если у вас меньше определенного количества разговоров, вы можете получить Dialogs вместо объекта, и в этом случае все ваши диалоги были возвращены, а количество диалогов у вас есть только длина векторов.

терминология

Терминология, используемая Telegram API, может иногда немного сбивать с толку, особенно из-за недостатка информации, кроме определений типов. Что такое «диалоги», «сообщения», «чаты» и «пользователи»?

  • dialogs представляет разговоры из вашей истории разговоров
  • chats представляет группы и каналы, соответствующие разговорам в истории разговоров
  • messages содержит последнее сообщение, отправленное на каждый разговор, как вы видите в списке разговоров в приложении Telegram
  • users содержит отдельных пользователей, с которыми у вас есть личные беседы или кто был отправителем последнего сообщения в одной из ваших групп

Например, если моя история чата была этим скриншотом, я взял изПриложение Telegram в магазине Play:

dialogs будет содержать разговоры на скриншоте: Старые Пираты, Пресс-центр, Моника, Джайна…

chats будет содержать записи для Old Pirates, Press Room и Meme Factory.

messages будет содержать сообщения «Все на борту!» из «Старых пиратов», «Ух ты, приятное упоминание!» из пресс-зала, сообщение, представляющее отправленную фотографию Монике, сообщение, представляющее ответ Джайны, и так далее.

users будет содержать запись для Эшли с тех пор, как она отправила последнее сообщение в пресс-центр, Монику, Джайну, Кейт и Уинстон с тех пор, как он отправил последнее сообщение на Фабрику мемов.

(Я еще не работал с секретными чатами через Telegram API, поэтому я не уверен, как они обрабатываются.)

Подсчет сообщений

Наша цель — подсчитать количество сообщений в каждом разговоре. Чтобы узнать количество сообщений разговора, мы можем использовать messages.getHistory функция из TL-схемы:

После того же процесса, что и ранее с messages.getDialogs мы можем решить, как вызвать это с Telethon, используя GetHistoryRequest , Это вернет либо Messages или MessagesSlice объект, который либо содержит count атрибут, сообщающий нам, сколько сообщений содержится в разговоре или всех сообщений в разговоре, чтобы мы могли просто посчитать содержащиеся в нем сообщения.

Тем не менее, сначала мы должны построить правильное InputPeer для нашего GetHistoryRequest , На этот раз мы используем InputPeerEmpty так как мы хотим получить историю сообщений для конкретного разговора. Вместо этого мы должны использовать либо InputPeerUser , InputPeerChat или InputPeerChannel конструктор в зависимости от характера разговора.

Управление данными ответа

Чтобы посчитать количество сообщений в каждом из наших разговоров, нам нужно сделать GetHistoryRequest для этого разговора с соответствующими InputPeer для этого разговора.

Все соответствующие InputPeer конструкторы принимают то же самое id а также access_hash параметров, но в зависимости от того, является ли разговор индивидуальным чатом, группой или каналом, эти значения находятся в разных местах GetDialogsRequest ответ:

  • dialogs : список разговоров, в которые мы хотим посчитать сообщения, и содержит peer значение с типом и id пира, соответствующего этому разговору, но не access_hash ,
  • chats : содержит id , access_hash и названия для наших групп и каналов.
  • users : содержит id , access_hash и имя для наших индивидуальных чатов.

В псевдокоде имеем:

Преобразование в код Python (обратите внимание, что dialogs , chats а также users выше являются членами результата нашего GetDialogsRequest который также называется dialogs ):

наш counts Объект — это словарь имен чатов для подсчета сообщений. Мы можем отсортировать его и распечатать, чтобы увидеть наши лучшие разговоры

Библиотека магии

Telethon имеет несколько вспомогательных функций для упрощения общих операций. На самом деле мы могли бы сделать вышеупомянутое с двумя из этих вспомогательных методов, client.get_dialogs() а также client.get_message_history() вместо:

Однако я чувствовал, что лучше сначала изучать методы API-интерфейса Telegram напрямую, тем более что не существует вспомогательного метода для всего. Тем не менее, есть некоторые вещи, которые намного проще с помощью вспомогательных методов, например, как мы аутентифицировали нашего клиента в начале, или такие действия, как загрузка файлов, которые в противном случае были бы утомительными.

Завершение

С API Telegram вы можете сделать гораздо больше, особенно с точки зрения аналитики. Я начал изучать его, подумав об одном из моих старых проектов, чтобы попытаться создать визуализацию данных из экспортированных историй чата WhatsApp:https://github.com/yi-jiayu/chat-analytics,

Используя регулярные выражения для анализа истории чата в виде простого текста, я мог создать диаграмму, аналогичную графику хранилища перфокарт GitHub, показывающую, в какое время недели чат был наиболее активным:

Однако использование функции «Чат по электронной почте» для экспорта было довольно хакерским, и вам нужно было вручную экспортировать историю разговоров для каждого чата, и это будет устаревшим, как только вы получите новое сообщение. Я не стал продвигать проект дальше, но я всегда думал, что другие истории могут быть извлечены из истории чатов.

Благодаря программному доступу к истории чатов, с чатами Telegram можно сделать гораздо больше. Методы, такие как messages.search может мне исключительно полезно. Возможно, динамически генерировать статистику по разговорам, которые достигают максимума или затухают, или которые постоянно активны, или находят ваши любимые смайлики или самые распространенные н-граммы? Предел неба (или ограничение скорости API, в зависимости от того, что ниже).

Обновления

(2017–10–25 09:45 SGT) Изменен подсчет сообщений для пропуска неожиданных диалогов

Похожие статьи