Как использовать 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
- +1 ещё
Почему callback_query_handler не видит call.data?
- 1 подписчик
- 8 часов назад
- 39 просмотров
Telegram API и библиотека TDLib для .NET платформ

Доброго времени суток! В 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-проектов:
- Переходим в папку (в командной строке) /example/csharp, т.е. туда, где будем собирать нашу библиотеку
- Создаём папку, куда будем собирать библиотеку, и переходим в неё:
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:
- Добавляем ссылку на наш файл Telegram.Td.dll, это можно сделать по следующему пути:
Проект -> Добавить -> Ссылка на проект -> Обзор -> Обзор
Ставим галочку напротив нашей библиотеки.
- Запускаем проект, для того, чтобы создать папку с exe- и dll-файлами нашей программы, и туда докидываем следующие dll, которые можно взять из той же папки, где мы получили собранную библиотеку Telegram.Td.dll: libcrypto-1_1-x64.dll, libssl-1_1-x64.dll, zlib1.dll.
Должен получиться похожий набор файлов, но главное, чтобы все 4 dll-файла для нашей библиотеки были вместе, включая саму библиотеку:
Теперь мы можем подключать библиотеку в коде:
using Td = Telegram.Td; using TdApi = Telegram.Td.Api;
Получение API Id и API Hash
Перед тем, как полноценно использовать библиотеку, нужно получить id и hash — своеобразная защита, чтобы пользоваться юзерботом можно было только с вашего разрешения. Их можно получить здесь:
- Войдите, пройдите небольшую аутентификацию и создайте новое приложение (поля URL и Description можно оставить пустыми, в Platform выберите Desktop):

- В разделе App Configuration найдите два поля: App api_id и App api_hash. Скопируйте их, они понадобятся для дальнейшей работы с TDLib.

Использование библиотеки 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#.
