Skip to content
This repository has been archived by the owner on Apr 1, 2020. It is now read-only.

Latest commit

 

History

History
156 lines (113 loc) · 5.25 KB

README-RU.md

File metadata and controls

156 lines (113 loc) · 5.25 KB

telegram-mtproto

npm version

Mobile Telegram Protocol (MTProto) пакет написан на ES6

Про MTProto...

MTProto - это протокол сервиса Telegram "придуман для работы с серверами API из мобильных приложений".

Mobile Protocol подразделятся на 3 части (с официального сайта):

  • Компонент высшего уровня (API query language): определяет методы через которые запросы и ответы преобразуются в двоичные сообщения.
  • Криптографический слой (для авторизаций): определяет методы через которые сообщения шифруются перед передачей.
  • Транспортный компонент: определяет протоколы по которым будут общаться клиент и сервер (такие как, http, https, tcp, udp).

Про telegram-mtproto в двух словах...

Никакие другие пакеты не нужны. Пакет telegram-mtproto позволяет реализовать все возможности работы с Mobile Protocol:

  • Выший уровень API для подключения к серверу

  • API которая работает через промисы

  • HTTP подключения которые выполняют перенос данных

  • Web worker - сверх быстрые криптографическеские работы в фоновом режиме

  • Реализация AES и RSA-шифрования шифрования, для безопасности

  • Оба метода plain-text и encrypted message для передачи данных на сервер

  • Обмен ключами Диффи-Хеллмана, поддерживающими функцию prime factorization, для безопасности

  • MTProto TL-Schema сборник JavaScript классов и функций

  • async storage для сохранения данных между сессиями

Установка

$ npm install --save telegram-mtproto@beta

Использование

import MTProto from 'telegram-mtproto'

const phone = {
  num : '+79123456789',
  code: '22222'
}

const api = {
  layer          : 57,
  initConnection : 0x69796de9,
  api_id         : 49631
}

const server = {
  dev: true // Подключаемся к тестовому серверу.
}           // Пустые поля конфигураций можно не указывать

const client = MTProto({ server, api })

async function connect(){
  const { phone_code_hash } = await client('auth.sendCode', {
    phone_number  : phone.num,
    current_number: false,
    api_id        : 49631,
    api_hash      : 'fb050b8f6771e15bfda5df2409931569'
  })
  const { user } = await client('auth.signIn', {
    phone_number   : phone.num,
    phone_code_hash: phone_code_hash,
    phone_code     : phone.code
  })

  console.log('Вы вошли как ', user)
}

connect()

Выше мы использовали две функции из API.

type auth.sendCode = (
  phone_number: string,
  sms_type: int,
  api_id: int,
  api_hash: string,
  lang_code: string
) => {
  phone_registered: boolean,
  phone_code_hash: string,
  send_call_timeout: int,
  is_password: boolean
}

type auth.signIn = (
  phone_number: string,
  phone_code_hash: string,
  phone_code: string
) => {
  expires: int,
  user: User
}

Больше про авторизацию, а также о многих других методах, вы можете прочитать в документации.

Дополнительные примеры можно посмотреть в папке с примерами.

Хранение

Вы можете использовать наши основные хранилища localForage для хранения данных. Модуль имеет следующие интерфейсы:

interface AsyncStorage {
  get(key: string): Promise<any>;
  set(key: string, value: any): Promise<void>;
  remove(...keys: string[]): Promise<void>;
  clear(): Promise<void>;
}
import { MTProto } from 'telegram-mtproto'
import { api } from './config'
import CustomStorage from './storage'

const client = MTProto({
  api,
  app: {
    storage: CustomStorage
  }
})

Лицензия

Проект запущен под лицензией MIT