Перейти к содержимому

Как использовать telegram api

  • автор:

Как использовать telegram api на php?

Как использовать приложение в телеграмме? Не могу понять почему всюду примеры использования telegram api для бота, а как использовать обычное api telegram? я хочу получить статус пользователя по номеру телефона https://core.telegram.org/constructor/auth.checkedPhone , как мне использовать этот метод не могу понять

Отслеживать
394 3 3 серебряных знака 21 21 бронзовый знак
задан 24 янв 2017 в 14:38
Vitalia Syxta Vitalia Syxta
41 4 4 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Возможно, самым простым способом использовать core API телеграма будет написание обёртки для telegram-cli. К сожалению, код этой программы открыт не полностью, но тем не менее, этот клиент умеет общаться с другими процессами на JSON по каналам или сокетам. Этот режим включается ключом —json .

telegram-cli читает со стандартного потока ввода объекты-команды и отправляет на стандартный поток вывода объекты-результаты и объекты-обновления. Также он может выполнять команды, читая их из сокета (нужно указать флаг -P , подробнее в справке). Помимо этого на stdout и stderr он печатает и диагностические сообщения (их стоит отфильтровывать).

Каждый объект в таком CLI протоколе имеет поле ID , задающее тип. Все типы перечислены в TL-схеме. Также одной из особенностью telegram-cli является то, что все прочие поля имеют на конце нижнее подчёркивание. То есть если в схеме параметр указан как phone_registered , то ему соответствует поле phone_registered_ в JSON объекте.

Подробнее смотрите пример по приведённой ссылке на домашней странице клиента или вот мой на JavaScript.

var spawn = require('child_process').spawn; var readline = require('readline'); // задержка между перезапусками клиента, в случае сбоя const RESTARTING_DELAY = 1000; // список запрещённых слов, для примера const obsceneLexicon = RegExp(. ); // основной объект для процесса telegram-cli var tg; function launchTelegram() < tg = spawn('./telegram-cli', ['--json', '-DCR'], < stdio: ['ipc', 'pipe', process.stderr] >); readline.createInterface(< input: tg.stdout >).on('line', function(data) < try < var obj = JSON.parse(data); >catch (err) < if (err.name == 'SyntaxError') < // клиент иногда отправлет не только json, обычный текст обрабатывать не // надо, просто выведем для удобной дальнейшей отладки console.log(data.toString()); >else < throw err; >> if (obj) < processUpdate(obj); >>); tg.on('close', function(code) < // иногда из-за багов telegram-cli падает, тогда пытаемся перезапустить его, // пропустив проблемные сообщения setTimeout(function(tg) < tg.kill(); // программа завершается при двойной отправке SIGINT tg.kill(); tg.on('close', launchTelegram); // как только она завершится, снова // запускаем для получения обновлений >, RESTARTING_DELAY, spawn('./telegram-cli', < stdio: 'inherit' >)); >); > function processUpdate(upd) < if (upd.ID='UpdateNewMessage' && upd.message_.content_.ID == 'MessageText' && upd.message_.can_be_deleted_ && upd.message_.content_.text_.search(obsceneLexicon)) < // если сообщение удолетворяет определённым критериям, отправляем // telegram-cli объект-команду на удаление tg.send(< 'ID': 'DeleteMessages', 'chat_id_': upd.message_.chat_id_, 'message_ids_': [ upd.message_.id_ ] >); > > launchTelegram(); // запускаем всю эту машинерию 

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

Telegram APIs

We offer two kinds of APIs for developers. The Bot API allows you to easily create programs that use Telegram messages for an interface. The Telegram API and TDLib allow you to build your own customized Telegram clients. You are welcome to use both APIs free of charge.

You can also add Telegram Widgets to your website.

Bot API

This API allows you to connect bots to our system. Telegram Bots are special accounts that do not require an additional phone number to set up. These accounts serve as an interface for code running somewhere on your server.

To use this, you don’t need to know anything about how our MTProto encryption protocol works — our intermediary server will handle all encryption and communication with the Telegram API for you. You communicate with this server via a simple HTTPS-interface that offers a simplified version of the Telegram API.

Bot developers can also make use of our Payments API to accept payments from Telegram users around the world.

TDLib – build your own Telegram

Even if you’re looking for maximum customization, you don’t have to create your app from scratch. Try our Telegram Database Library (or simply TDLib), a tool for third-party developers that makes it easy to build fast, secure and feature-rich Telegram apps.

TDLib takes care of all network implementation details, encryption and local data storage, so that you can dedicate more time to design, responsive interfaces and beautiful animations.

TDLib supports all Telegram features and makes developing Telegram apps a breeze on any platform. It can be used on Android, iOS, Windows, macOS, Linux and virtually any other system. The library is open source and compatible with virtually any programming language.

Telegram API

This API allows you to build your own customized Telegram clients. It is 100% open for all developers who wish to create Telegram applications on our platform. Feel free to study the open source code of existing Telegram applications for examples of how things work here. Don’t forget to register your application in our system.

Getting started

Creating an application

How to get your application identifier and create a new Telegram app.

User authorization

How to register a user’s phone to start using the API.

Two-factor authentication

How to login to a user’s account if they have enabled 2FA, how to change password.

QR code login
Error handling

How to handle API return errors correctly.

Handling different data centers

How to connect to the closest DC access point for faster interaction with the API, and things to watch out for when developing a client.

Handling updates

How to subscribe to updates and handle them properly.

Handling PUSH-notifications

How to subscribe and handle them properly.

Channels, supergroups, gigagroups and basic groups

How to handle channels, supergroups, gigagroups, basic groups, and what’s the difference between them.

Forums

Telegram allows creating forums with multiple distinct topics.

Channel statistics

Telegram offers detailed channel statistics for channels and supergroups.

Calling methods

Additional options for calling methods.

Uploading and Downloading Files

How to transfer large data batches correctly.

Pagination

How to fetch results from large lists of objects.

Client configuration

The MTProto API has multiple client configuration parameters that can be fetched with the appropriate methods.

Security

Secret chats, end-to-end encryption
Security guidelines

Important checks required in your client application.

Perfect Forward Secrecy

Binding temporary authorization key to permanent ones.

End-to-End Encryption in Voice and Video Calls

Optimization

Client optimization

Ways to boost API interactions.

API methods

Available method list

A list of available high-level methods.

API TL-schema, as JSON

Text and JSON-presentation of types and methods used in API.

Available layer list

A list of available schema versions.

Other articles

Working with bots, using the MTProto API

How to work with bots using the MTProto API.

Commands

Bots offer a set of commands that can be used by users in private, or in a chat.

Buttons

Users can interact with your bot via buttons or even inline buttons, straight from inline messages in any chat.

Menu button

Bots can choose the behavior of the menu button shown next to the text input field.

Inline queries

Users can interact with your bot via inline queries, straight from the text input field in any chat.

Games

Bots can offer users HTML5 games to play solo or to compete against each other in groups and one-on-one chats; how to work with games in the MTProto API.

Web apps

Bots can offer users interactive HTML5 web apps to completely replace any website.

Attachment menu

Bots can install attachment menu entries, offering conveniently accessible, versatile web apps.

Search & filters

Telegram allows applying detailed message filters while looking for messages in chats. This allows the server to filter messages based on a text query, and even on their type, and this feature is often used by graphical clients to implement features like the chat gallery, chat profile pictures and more.

Polls

Telegram allows sending polls and quizzes, that can be voted on by thousands, if not millions of users in chats and channels.

Reactions

Telegram allows users to react on any message using specific emojis, triggering cute lottie animations.

Emoji status

Telegram allows users to set an emoticon or a custom emoji as status, to show next to their name in chats and profiles.

Invite links and join requests

Channels, basic groups and supergroups may have a public username or a private invite link: private invite links may be further enhanced with per-user join requests.

Admin, banned and default rights for channels, supergroups and groups

How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.

Discussion groups

Groups can be associated to a channel as a discussion group, to allow users to discuss about posts.

Channel comments and message threads

Telegram allows commenting on a channel post or on a generic group message, thanks to message threads.

Admin log

Both supergroups and channels offer a so-called admin log, a log of recent relevant supergroup and channel actions, like the modification of group/channel settings or information on behalf of an admin, user kicks and bans, and more.

Pinned messages

Telegram allows pinning multiple messages on top of a specific chat.

Mentions

Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible.

Scheduled messages

Telegram allows scheduling messages.

Live geolocations

Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert.

Min constructors

Sometimes, user and channel constructors met in group chat updates may not contain full info about the user: how to handle such constructors.

Account deletion

How to delete a Telegram account.

Imported messages

Telegram allows importing messages and media from foreign chat apps.

Telegram Passport

How to work with Telegram Passport directly using the MTProto API.

Telegram Payments

How to work with Telegram Payments directly using the MTProto API.

Styled text with message entities

How to create styled text with message entities

Working with stickers

Telegram clients support displaying animated, static and video stickers.

Working with custom emojis

Telegram allows including custom animated, static and video emojis directly inside of messages.

Working with animated emojis

Graphical telegram clients should transform emojis into their respective animated version.

Working with animated dice

Telegram supports sending animated dice emojis.

Message drafts

How to handle message drafts

Folders

Working with folders

Top peer rating

If enabled, the rating of top peers indicates the relevance of a frequently used peer in a certain category (frequently messaged users, frequently used bots, inline bots, frequently visited channels and so on).

Handling file references

How to handle file references.

Seamless Telegram Login

Handle Seamless Telegram Login URL authorization requests.

Wallpapers

How to work with chat backgrounds.

Notification sounds

How to work with chat notification sounds.

Message transcription

How to transcribe voice messages.

Message translation

Telegram allows translating chat messages, and Telegram Premium users may even enable real-time chat translation.

Native antispam system

Admins of supergroups with a certain number of members can choose to unleash the full proactive power of Telegram’s own antispam algorithms – turning on the new Aggressive mode for the automated spam filters.

Collectible usernames

Telegram users can make it easy for others to contact them or find their public groups and channels via usernames: clients can also assign multiple collectible usernames to accounts, supergroups and channels they own.

Web events

When interacting with HTML5 games and the websites of payment gateways, Telegram apps should expose the following JS APIs.

Как использовать telegram api?

Всем привет. может кто подсказать как получить сообщения с чата (группы телеграмма, где не я админ но есть id)
смотрю в документации, по боту есть пример запроса, а как обратиться через Telegram API что- то не пойму.
Создал приложение на сайте получил api_id, Api_hash и т.д.
Есть метод messages.getHistory, как к нему обратиться без бота?
Использую nest js.

  • Вопрос задан 18 окт.
  • 82 просмотра

Комментировать

Решения вопроса 0

Ответы на вопрос 0

Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python
  • +1 ещё

Почему callback_query_handler не видит call.data?

  • 1 подписчик
  • 8 часов назад
  • 39 просмотров

Telegram API и библиотека TDLib для .NET платформ

image

Доброго времени суток! В Telegram существует два вида API: Telegram Bot API (обыкновенный бот с пометкой «бот») и Telegram API (клиент и юзербот, который обладает больше функционалом, чем просто бот). В этой статье пойдет речь о втором виде, а именно: что требуется для взаимодействия с Telegram API, какие средства нужны для написания кода своего юзербота на языке C#, как их правильно установить, а также каким образом использовать их.

Введение

Администраторам групп и чатов порой необходимо пользоваться таким полезным инструментом как боты, а кому-то и вовсе требуется свой клиент для запросов серверу Telegram. Для взаимодействия с ботами существует немалое количество готовых библиотек для различных языков и платформ, но если требуется написать собственную программу или библиотеку (возможно, написанные другими людьми библиотеки ограничены и не содержат требуемых вам функций), то для этого Telegram имеет собственный API.

Telegram поддерживает два варианта API: Telegram Bot API (обычный бот) и Telegram API (собственный клиент или юзербот). В сегодняшнем материале речь пойдет о втором случае, когда нужно свой аккаунт использовать как бота или же для каких-либо иных действий. Например, с помощью Telegram API можно написать полностью свой клиент, который будет работать точно также как и основной «телеграммовский» клиент, можно реализовать отображение реального времени на вашей аватарке, можно использовать своего юзербота как сканер для защиты вашего чата от спама, флуда, «рейдов» и т. д. В общем, применений найдется много.

Для реализации юзербота потребуются две вещи: библиотека TDLib и любой язык, который способен выполнять функции языка C (в нашем случае используем C#).

Сборка и подключение библиотеки TDLib

Чтобы обеспечить взаимодействие между вашим клиентом и сервером Telegram, используется кроссплатформенная библиотека TDLib (Telegram Database Library). Будем устанавливать ее для Visual Studio (нужна версия от 2015 и выше, а также CMake в консоли).

TDLib через NuGet

Обратите внимание, что библиотека TDLib, устанавливаемая через NuGet, и библиотека Telegram.Td.dll, собираемая через CMake — это разные вещи, обладающие несколько разными интерфейсами. В нашем случае мы используем собираемый через CMake вариант.

TDLib имеет следующие зависимости, т. е. на вашем компьютере это должно быть:

  • компилятор C++14 (Visual Studio имеет свой компилятор MSVC);
  • Библиотека OpenSSL;
  • Библиотека zlib;
  • gperf (только сборка);
  • CMake (3.0.2+, только сборка).

Для установки необходимых зависимостей, выполните следующие команды в командной строке (обратите внимание, что требуется git):

git clone https://github.com/Microsoft/vcpkg.git cd vcpkg git checkout 1b1ae50e1a69f7c659bd7d731e80b358d21c86ad .\bootstrap-vcpkg.bat .\vcpkg.exe install gperf:x64-windows gperf:x86-windows openssl:x64-windows openssl:x86-windows zlib:x64-windows zlib:x86-windows

Далее скачиваем саму библиотеку и собираем её для .NET-проектов:

  1. Переходим в папку (в командной строке) /example/csharp, т.е. туда, где будем собирать нашу библиотеку
  2. Создаём папку, куда будем собирать библиотеку, и переходим в неё:

mkdir build cd build
cmake -A Win32 -DTD_ENABLE_DOTNET=ON -DCMAKE_TOOLCHAIN_FILE=/scripts/buildsystems/vcpkg.cmake ../../..
cmake -A x64 -DTD_ENABLE_DOTNET=ON -DCMAKE_TOOLCHAIN_FILE=/scripts/buildsystems/vcpkg.cmake ../../..
cmake --build . --config Release
cmake --build . --config Debug

Готово! Теперь в папке build/Release или build/Debug (в зависимости от того, что вы выбрали) находится готовый файл Telegram.Td.dll, который и нужно использовать в своем проекте.

Давайте теперь подключим её в Visual Studio:

  1. Добавляем ссылку на наш файл Telegram.Td.dll, это можно сделать по следующему пути:
    Проект -> Добавить -> Ссылка на проект -> Обзор -> Обзор
    Ставим галочку напротив нашей библиотеки.
    image
  2. Запускаем проект, для того, чтобы создать папку с exe- и dll-файлами нашей программы, и туда докидываем следующие dll, которые можно взять из той же папки, где мы получили собранную библиотеку Telegram.Td.dll: libcrypto-1_1-x64.dll, libssl-1_1-x64.dll, zlib1.dll.
    Должен получиться похожий набор файлов, но главное, чтобы все 4 dll-файла для нашей библиотеки были вместе, включая саму библиотеку:
    image

Теперь мы можем подключать библиотеку в коде:

using Td = Telegram.Td; using TdApi = Telegram.Td.Api;

Получение API Id и API Hash

Перед тем, как полноценно использовать библиотеку, нужно получить id и hash — своеобразная защита, чтобы пользоваться юзерботом можно было только с вашего разрешения. Их можно получить здесь:

  1. Войдите, пройдите небольшую аутентификацию и создайте новое приложение (поля URL и Description можно оставить пустыми, в Platform выберите Desktop):
    image
  2. В разделе App Configuration найдите два поля: App api_id и App api_hash. Скопируйте их, они понадобятся для дальнейшей работы с TDLib.
    image

Использование библиотеки TDLib

Рассмотрим готовый вариант использования, находящийся в самой папке библиотеки, которую мы скачали до этого: . \TDLib\td-master\example\csharp\TdExample.cs

Перед тем, как запускать для проверки этот пример в коде, в методе OnAuthorizationStateUpdated, содержащем все необходимое для авторизации, включая обработки текущих стадий авторизации, стоит исправить эти две строки на ваш api_id и api_hash, которые мы получили до этого:

request.ApiId = /*api_id*/; request.ApiHash = /*api_hash*/;

Разберемся с основным методом Main, где до основного цикла происходит процедура создания клиента:

Td.Client.Execute(new TdApi.SetLogVerbosityLevel(0)); if (Td.Client.Execute(new TdApi.SetLogStream(new TdApi.LogStreamFile("tdlib.log", 1 new Thread(() => < Thread.CurrentThread.IsBackground = true; Td.Client.Run(); >).Start(); _client = CreateTdClient(); _defaultHandler.OnResult(Td.Client.Execute(new TdApi.GetTextEntities("@telegram /test_command https://telegram.org telegram.me @gif @test")));

В целом, эту часть трогать не стоит, она необходима, чтобы Ваш клиент работал правильно и вообще работал.

Далее идёт основной цикл:

while (!_needQuit) < // Ожидание авторизации _gotAuthorization.Reset(); _gotAuthorization.WaitOne(); // Предзагрузка чатов _client.Send(new TdApi.LoadChats(null, 100), _defaultHandler); // Пока пользователь авторизован, происходит обработка команд в консоли. // Если же окажется, что пользователь разлогинился (метод GetCommand содержит данную // возможность), то авторизация происходит снова. // Выход из цикла организуется, когда пользователь выходит из клиента // (опять же метод GetCommand содержит данную возможность). while (_haveAuthorization) < GetCommand(); >>

Пример содержит также два достаточно важных класса: DefaultHandler и UpdateHandler. В них происходит обработка всех пришедших данных от сервера Telegram.

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

void Td.ClientResultHandler.OnResult(TdApi.BaseObject @object) < if (@object is TdApi.UpdateAuthorizationState) < OnAuthorizationStateUpdated((@object as TdApi.UpdateAuthorizationState).AuthorizationState); >else if (@object is TdApi.UpdateNewMessage) < // Здесь - вызов собственного метода, где в качестве аргумента можно указать (@object as TdApi.UpdateNewMessage).Message, // чтобы обрабатывать сообщения, которые пришли. // Таким образом, можно реализовать бота, отвечающего на различные команды в чате. >>

DefaultHandler нужен, когда мы где-то в коде посылаем команду-запрос с помощью метода Send:

_client.Send(new /*метод*/, _defaultHandler);

При этом ответ на этот запрос обрабатывается в DefaultHandler:

private class DefaultHandler : Td.ClientResultHandler < void Td.ClientResultHandler.OnResult(TdApi.BaseObject @object) < // Здесь происходит обработка @object, который и является ответом на наш запрос. // @object может быть любым классом, который в документации указан в качестве // возвращаемого к методу, сделавшему запрос >>

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

Заключение

TDLib является удобным инструментом для реализации собственного клиента на .NET-платформе, но, к сожалению, для других систем, кроме тех, что на базе Windows, этот вариант создания своего клиента не подходит, поэтому можно воспользоваться JSON-интерфейсом через P/Invoke, если нужен именно C#.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *