Skip to content

DenisIzmaylov/telegram-mtproto

 
 

Repository files navigation

telegram-mtproto

npm version

Telegram Mobile Protocol (MTProto) library in es6

About MTProto..

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).

telegram-mtproto in short..

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

Usage

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
    }))

Installation

$ npm install --save telegram-mtproto

API

  • network. Classes for network connection

    • http

    • tcp

  • tl. Telegram schema api

  • Telegram. High level api.

    • createClient () => TelegramClient

License

The project is released under the Mit License

About

Telegram MTProto library (WIP)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%