Telegram Mobile Protocol (MTProto) library in es6
MTProto is the Telegram Messenger protocol "designed for access to a server API from applications running on mobile devices".
The Mobile Protocol is subdivided into three components (from the official site):
-
High-level component (API query language): defines the method whereby API queries and responses are converted to binary messages.
-
Cryptographic (authorization) layer: defines the method by which messages are encrypted prior to being transmitted through the transport protocol.
-
Transport component: defines the method for the client and the server to transmit messages over some other existing network protocol (such as, http, https, tcp, udp).
No more additional libs. The telegram-mtproto library implements the Mobile Protocol and provides all features for work with telegram protocol:
-
A high level api for server connection
-
Promise-based API
-
Both TCP and HTTP connections implemented in the transport layer
-
A cipher implementation for AES and RSA encryption in the security layer
-
Both plain-text and encrypted message to communicate data with the server
-
Diffie-Hellman key exchange supported by the prime factorization function implemented in the security layer
-
MTProto TL-Schema compilation as javascript classes and functions
const { Telegram, network } = require('telegram-mtproto')
const fileSchema = require('./api-schema-57.json')
const telegram = new Telegram(fileSchema)
const addKey = key => telegram.addPublicKey(key)
publicKeys.forEach(addKey)
const connection = new network.http(server)
const client = telegram.createClient()
client.setConnection(connection)
connection.connect()
.then(() => console.log(`api ready for requests`))
.then(() => client.callApi('auth.sendCode', {
phone_number : phone.num,
current_number: false,
api_id : config.id,
api_hash : config.hash
}).then(
({ phone_code_hash }) =>
client.callApi('auth.signIn', {
phone_number : phone.num,
phone_code_hash: phone_code_hash,
phone_code : phone.code
}))
$ npm install --save telegram-mtproto
-
network. Classes for network connection
-
http
-
tcp
-
-
tl. Telegram schema api
-
Telegram. High level api.
- createClient () => TelegramClient
The project is released under the Mit License