что такое api id api hash в телеграмм
Создание своего клиента 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 чатов на Python
В данном туториале мы научимся собирать данные и сообщения участников чатов и каналов Telegram, а также сохранять эту информацию в виде JSON-файлов, которые далее легко анализировать или экспортировать в базы данных.
Для указанных задач будет использоваться Python не ниже версии 3.5, а также высокоуровневая библиотека для работы с Telegram API – Telethon. Установить библиотеку можно с помощью менеджера пакетов pip :
Регистрируем в Telegram новое приложение
Вводим пришедший в Telegram численно-буквенный код и попадаем на страницу регистрации нового приложения. Заполняем форму, достаточно первых двух граф:
В результате попадаем на страницу конфигурации приложения. Находим оба параметра, а также доступные MTProto-сервера и открытые (публичные) ключи.
Избегая проблем с безопасностью, сохраняем учетные данные в отдельном файле config.ini следующей структуры:
Создаем клиент Telegram
Начнем с импорта библиотек.
Встроенные модули configparser и json применяем соответственно для чтения параметров и вывода данных. Из библиотеки Telethon импортируем класс клиента Telegram и класс исключений. Внутренний модуль connection необходим при использовании прокси-сервера. Остальные элементы модуля telethon.tl используются для запросов необходимых нам списков (участников канала/чата и их сообщений).
Теперь считаем учетные данные из config.ini :
Создадим объект клиента Telegram API:
При первом запуске платформа запросит номер телефона, и вслед – код подтверждения. Так же, как если бы вы входили в учетную запись в приложении или браузере.
Для сбора, обработки и сохранения информации мы создадим две функции:
Касательно написания вызова функций стоит оговориться, что Telethon является асинхронной библиотекой. Поэтому в коде используются операторы async и await. В связи с этим функция main полностью будет выглядеть так:
Заметим, что из-за асинхронности Telethon может некорректно работать в средах, использующих те же подходы (Anaconda, Spyder, Jupyter).
Собираем данные об участниках
Telegram не выводит все запрашиваемые данные за один раз, а выдает их в пакетном режиме, по 100 записей за каждый запрос.
Самый простой способ сохранить собранные данные в структурированном виде – воспользоваться форматом JSON. Базы данных, такие как MySQL, MongoDB и т. д., стоит рассматривать лишь для очень популярных каналов и большого количества сохраняемой информации. Либо если вы планируете такое расширение в будущем.
В JSON-файле можно хранить и всю информацию о каждом пользователе, но обычно достаточно лишь нескольких параметров. Покажем на примере, как ограничиться набором определенных данных:
Собираем сообщения
Ситуация со сбором сообщений идентична сбору сведений о пользователях. Отличия сводятся к трем пунктам:
Таким образом, с помощью Python и Telethon мы написали скрипт, собирающий и сохраняющий данные и реплики участников сообществ Telegram.