двусмысленность в использовании библиотеки telegram-mtproto nodejs - PullRequest
0 голосов
/ 29 мая 2020

Я хочу подключиться к Telegram, используя nodejs.

Библиотеки, которые я смог найти, работают с tdlib , которые мне нужно сначала создать на моей ОС. Однако при этом я сталкиваюсь с множеством ошибок.

Наконец, я смог найти библиотеку, для которой не нужен tdlib, и которая могла бы подключиться к серверу без него. его имя telegram-mtproto .

Я написал этот код на основе их примеров.

const telegram = require ('telegram-mtproto')
const conf = {
  telegram:{
    id: 'api-id',
    hash:'api-hash',
    mobile:'+9996620001'
  }
}
function init(){

    const api = {
        layer          : 57,
        initConnection : 0x69796de9,
        api_id         : conf.telegram.id,
        invokeWithLayer: 0xda9b0d0d,
        app_version    : '1.0.1',
        lang_code      : 'en'
    }

    const server = { dev: true, webogram: true}

    return telegram.MTProto({ api, server })
}

let client,
    phone_code_hash;

async function connect(params){

    if (!client) client = init();

    try{
        if (params.level == 1){

            const a = await client('auth.sendCode', {
                phone_number  : conf.telegram.mobile,
                current_number: false,
                api_id        : conf.telegram.id,
                api_hash      : conf.telegram.hash
            })

            phone_code_hash = a.phone_code_hash;

            return a;
        }
        else if (params.level == 2){

            const a = await client('auth.signIn', {
                phone_number   : conf.telegram.mobile,
                phone_code_hash,
                phone_code     : params.code
            })

            console.log(a)

            return a;
        }
    }
    catch(err){
        console.log(err);
    }

}

connect({level:1}).then(res=>{
    connect({level:2,code:'22222'});
});

Однако у меня есть несколько вопросов. Если вы работали с этой библиотекой, , пожалуйста, помогите мне :

  1. Каков полный список параметров, которые можно ввести в переменную api и какой из них является обязательным?

  2. Какую роль играет слой ключ в api переменной? Обязательно ли его использовать? Следует ли всегда фиксировать его значение на 57 ?

  3. Что такое ключ invokeWithLayer , используемый в переменной api ? Всегда ли это значение должно быть 0xda9b0d0d ?

  4. Что такое ключ webogram в переменной server ?

  5. Я зарегистрировался в https://my.telegram.org/apps. Он дал мне URL-адрес с именем тестовая конфигурация , URL-адрес с именем производственная конфигурация и набор publi c ключей . Как я могу ввести эти значения в программу?

  6. библиотека прошла через процессы auth.sendCode и auth.signIn во всех своих Примеры.

Что я должен сделать позже, чтобы пропустить эти шаги, когда я go успешно их выполнил в первый раз?


Я прочитал основные документы телеграмм, но они казались мне двусмысленными, и я не мог извлечь из них ничего полезного.

...