Newlyweds Proposing Marriage

    TypeScript icon, indicating that this package has built-in type declarations

    5.9.0 • Public • Published


    NPM Downloads

    Telegram API JS (MTProto) client library for browser and nodejs


    npm i mtproton -E

    Quick start

    You need api_id and api_hash. If you do not have them yet, then get them according to the official instructions: creating your Telegram application.

    const { MTProto } = require('mtproton');
    const api_id = 'YOU_API_ID';
    const api_hash = 'YOU_API_HASH';
    // 1. Create an instance
    const mtproto = new MTProto({
    // 2. Provide params for initConnection method (optional)
      app_version: '10.0.0',
    // 3. Get the user country code'help.getNearestDc').then(result => {



    new MTProto({ api_id, api_hash, test, customLocalStorage }) => mtproto

    api_id: number and api_hash: string

    api_id and api_hash are required. If you do not have them yet, then get them according to the official instructions: creating your Telegram application.

    test: boolean

    Default: false. Use test data centers. On test servers, you can use test phone numbers.

    customLocalStorage: localStorage

    Default for browser: window.localStorage. Default for nodejs: node-localstorage. Custom storage for save auth data. Your localStorage must follow this API:

    class MyAsyncLocalStorage {
      setItem(key: string, value: string): Promise<void>;
      getItem(key: string): Promise<string|null>;

    We have ready-made storage:

    1. tempLocalStorage only stores data while the script is running


    const { tempLocalStorage } = require('mtproton/src/storage/temp');
    const mtproto = new MTProto({
      customLocalStorage: tempLocalStorage,
    });, params, options) => Promise

    method: string

    Method name from methods list.

    params: object

    Parameters for method from{method}#parameters.

    1. If the method needs the flags parameter, flags is calculated automatically 🙃

    2. If you need to pass a constructor use _. Example for users.getFullUser:

    const params = {
      id: {
        _: 'inputUserSelf',

    options.dcId: number

    Specific DC id. By default, it is 2. You can change the default value using mtproto.setDefaultDc method.

    options.syncAuth: boolean

    Default: true. Copy authorization to all DC if the response contains auth.authorization.

    Example:'help.getNearestDc', {}, {
      dcId: 1
    }).then(result => {
      console.log('result:', result);
      // { _: 'nearestDc', country: 'RU', this_dc: 1, nearest_dc: 2 }
    }).catch(error => {
      console.log('error.error_code:', error.error_code);
      console.log('error.error_message:', error.error_message);

    mtproto.updates.on(updates, listener)

    Method for handles updates.

    Example of handling a updateShort with updateUserStatus:

    mtproto.updates.on('updateShort', message => {
      const { update } = message;
      if (update._ === 'updateUserStatus') {
        const { user_id, status } = update;
        console.log(`User with id ${user_id} change status to ${status}`);

    mtproto.setDefaultDc(dcId) => Promise

    If a migration error occurs, you can use this function to change the default data center. You can also use options.dcId.

    See the example in the authentication.


    Provide params for initConnection method. I recommend running this function immediately after creating an instance of MTProto.

    See the example in the quick start.

    getSRPParams({ g, p, salt1, salt2, gB, password }) => { A, M1 }

    Function to calculate parameters for 2FA (Two-factor authentication). For more information about parameters, see the article on the Telegram website.

    See the example in the authentication.

    Useful references


    npm i mtproton

    DownloadsWeekly Downloads






    Unpacked Size

    529 kB

    Total Files


    Last publish


    • godliked