как узнать хеш телеграмм

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

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

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

Получение api_id

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

Важные оповещения для разработчиков будут присылаться по указанному телефону, поэтому рекомендуется использовать актуальный номер, к которому привязан активный аккаунт 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.

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

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.

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.

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.

Источник

Выгрузка сообщений с использованием Telegram API. С чего начать

На просторах интернета можно найти множество описаний и примеров по созданию telegram bot-ов.Но Telegram Bot Api имеет ограниченный функционал. Для решения задачи по выгрузке сообщений из Telegram по ключевому слову необходимо использовать Telegram API. За основу была взята библиотека TLSharp. Стоит сразу прояснить, что дальнейшая работа возможна только для зарегистрированных пользователей в Telegram.

Стартом работы с API служит регистрация приложения:

Работа с библиотекой

Добавляем в проект Visual Studio через консоль диспетчера пакетов:

Для начала работы создаём клиента с параметрами api_id и api_hash, полученными выше — совершаем подключение.

Для аутентификации своего аккаунта, выполняем следующее:

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

Приступаем к выгрузке сообщений из каналов, обязательное условие, предварительно нужно быть подписанным на канал. Получаем все диалоги, которые есть у пользователя:

Записанная переменная теперь хранит все диалоги, но для того чтобы отобрать только каналы, удобная структура позволяет выделить диалоги каналов и чатов, используя:

Проходим по всем чатам и каналам, отдельно проверяя является ли следующий элемент чатом или каналом:

Читайте также:  оби двери межкомнатные айова

В библиотеке TLSharp реализованы все функции официального API. Функции реализованы через запросы, например, дополнительную информацию по каналу можно получить через запрос вида:

Вызывается метод SendRequestAsync с типом возвращаемого значения и в качестве параметра следует любой из предложенных в библиотеке запросов. Далее представлен код, получающий полную информацию о канале, в этом случае для получения канала нужны два параметра — это ChannelId и AccessHash:

Выгрузка сообщений

Выгрузка сообщений происходит порциями по 100 сообщений и параметром AddOffset настраивается выгрузка следующей порции сообщений.

Сообщения бывают двух типов TLMessage и TLMessageService. Первый — обычное текстовое сообщение, возможно содержащий в себе некоторый медиа файл. Второй тип сообщений в большинстве случаев представляет собой звонок или сообщения от Telegram Service.

Поиск по сообщениям

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

Для формирования вашего запроса остается только заполнить параметры и далее таки же образом обрабатываем получаемые сообщения.

На этом всё, надеюсь кому-то это статья была полезной.

Источник

Подслушиваем чат телеграма с помощью своего клиента

Захотелось как-то мне, чтобы сообщения одного из чатов телеграма сохранялись у меня на диске (не запуская обычного клиента). Не буду раскрывать своих побудительных мотивов, но возможность эта показалась мне нужной и полезной.

Для этого в телеграме есть боты. На Хабре есть несколько статей, посвященных ботам, например: «Чат-помощник на сайт».

Бот позволяет читать и посылать сообщения, для регистрации бота не нужен телефон и количество ботов может быть любым. Но название бота включает в себя слово «bot», что может вызвать у хозяина чата ненужные вопросы.

Но, как говорится, правильно поставленный вопрос — половина ответа.

Оказывается кроме «API telegram bot» существует еще и «API telegram client», т.е. API для создания собственных клиентов.

Клиент также может посылать и читать сообщения, но только от зарегестрированного (привязанного к телефону) пользователя, что мне как раз подходит (я уже зарегестрирован в чате).

На сайте телеграма есть список API для разных платформ: https://telegram.org/apps#source-code

Однако, самой простой в использовании оказалась библиотека на python: Pure Python 3 MTProto API Telegram client library под названием «telethon»

Только вот проблема. Я не знаю питон. Ну что ж, есть повод познакомиться.
Как утверждает мануал по телетону, инсталляция его очень простая. Достаточно запустить команду в командной строке:

Подводные камни, встреченные мною при инсталляции:

Все установилось. Листаем readme.txt дальше.

Следущим пунктом идет создание клиента телеграма… Как, уже? Ну да, все просто. Правда, сперва нужно зарегистритровать себя как создателя клиента.

Заходим на сайт телеграма: https://my.telegram.org
Вводим телефон и ждем код подтверждения на родном клиенте телеграма. Он довольно длинный (12 символов) и неудобный для ввода.

Заходим в пункт «API». Ищем «Telegram API» и заходим в «Creating an application» (https://my.telegram.org/apps).

Заполняем поля App title и Short name, нажимаем «Create application» и запоминаем две переменные: api_id и api_hash.

Пришла пора делать клиента.

session_name — можно вставить любое имя. Вас попросят ввести телефон и пришлют код подтверждения. После этого клиент будет работать без запроса телефона (до тех пор, пока не поменяете session_name). Рядом с вашей программой появится файл session_name.session

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

Узнаем немного о себе:

результат выдается в виде:

Можем послать сообщение от себя:

Как меня видят другие:

Смотрим, на какие чаты мы подписаны:

читаем все сообщения чата «chat_name» (осторожно, сообщений может быть очень много)

просмотр всех пользователей чата

Побаловались?
Теперь, собственно, делаем то, ради чего мы все это затеяли.

Нам нужна программка, следящая за новыми сообщениями в определенном канале.

Чтобы клиент не заканчивал работу, после client.start() вставляем строку:

Эта конструкция (вставляется перед client.start()) выводит только новые сообщения:

создает событие, срабатывающее при появлении нового сообщения

выводит сообщение в таком виде:

Из всего этого нам нужно поле: «message=’hello telegram'»:

Сообщение получили, но от кого оно, непонятно, т.к. в сообщение только ID пользователя. Чтобы сопоставить ID и имя пользователя, скачиваем всех пользователей чата и помещаем их в словарь (хэш) в виде d[id]=»first_name last_name»

Теперь мы можем узнать, кто послал сообщение:

В принципе, можно получить имя пользователя из телеграма напрямую, но если пользователей немного, проще со словарем.

Читайте также:  полимерцементная краска для фасада

Вытаскиваем из сообщения дату отправки:

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

И запишем сообщение:

Вот и все! Все, что мне было нужно, программка делает. Утилитка, конечно, сыровата, но свою задачу выполняет.

Python оказался не таким уж и сложным как его малюют, тем более описание и разных библиотек в интернете полным-полно. Написать еще пару утилиток и привыкнув к нему, можно использовать его как скриптовый язык вместо bash.

Источник

Введение в Telegram API

Дата публикации Oct 24, 2017

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

Тип Язык

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

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

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

Слои TL-схемы

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

Начиная

Создание приложения 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в примере кода здесь.

Установка Telethon

Вы можете установить 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 переменная.

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

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

Работа с Telegram API

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

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

Читайте также:  ремонт квартир с нишей

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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) Изменен подсчет сообщений для пропуска неожиданных диалогов

Источник

Образовательный портал