3

我已经下载了 Telegram 的 CLI 版本(https://telegram.org/)。该 CLI 界面的 Not-So-Complete 版本是从以下位置下载的: https ://github.com/griganton/telepy

现在,身份验证一切正常,但实际功能为 0。

所以我改变了一点 JASON-Scheme 并添加了初始身份验证所需的功能

{'id': '1988976461',
 'method': 'sendCode',
 'params': [{'name': 'phone_number', 'type': 'string'},
            {'name': 'sms_type', 'type': 'int'},
            {'name': 'api_id', 'type': 'int'},
            {'name': 'api_hash', 'type': 'string'},
            {'name': 'lang_code', 'type': 'string'}],
 'type': 'SentCode'}

如文档中所写 https://core.telegram.org/method/auth.sendCode

现在,在我不这样做之后,根据文档,似乎在发送了一条请求 SMS 代码的消息之后,我应该 auth.SentCode在数据包的开头收到十六进制代码0xEFED51D9,但我收到的是来自服务器的响应,有些东西msg_container73f1f8dc似乎与我的要求没有任何联系的类型。

总而言之,这似乎非常烦人和奇怪,我不知道是什么原因导致我遵循文档并尝试按要求实施。

我发送的数据包看起来不错,我实际上将 SmsCode 发送到我的手机。但我得到的响应很糟糕\由于某种原因不清楚。

我正在调用 JSON 中实现的函数,如下所示:

auth = Session.method_call('sendCode', phone_number=PHONE_NUMBER, sms_type=0, api_id=MY_API_ID, api_hash=MY_API_HASH, lang_code="en")

所以它正在运行..但我需要 phone_code_hash.. 请注意,出于某种原因,Telegram 本身的文档也很奇怪。查看他们提供的查询示例,这些数字与文档所说的不匹配(引自他们的文档):

查询示例:

(auth.sendCode "79991234567" 1 32 "test-hash" "en")
=
(auth.sentCode
  phone_registered:(boolFalse)
  phone_code_hash:"2dc02d2cda9e615c84"
)

d16ff372 3939370b 33323139 37363534 00000001 00000020 73657409 61682d74 00006873 e77e812d
=
2215bcbd bc799737 63643212 32643230 39616463 35313665 00343863 e12b7901

取自这里:https ://core.telegram.org/method/auth.sendCode

每个部分的预期第一个 DWORD 应该不同.. 例如:768d5f4d而不是d16ff372..

那我错过了什么?

一些参考(由于某种原因,如果我不把它作为代码部分,它不会让我发布这个)

https://core.telegram.org/constructor/auth.sentCode
https://core.telegram.org/mtproto/service_messages
https://core.telegram.org/method/auth.sendCode
4

2 回答 2

0

好吧,问题是套接字处理不当..服务器只发送了两个数据包。

第一个数据包是一些Message_Service,第二个数据包是我真正想要的数据..

这很奇怪,因为它没有在文档中说明这些消息

于 2015-04-27T07:00:12.680 回答
0

Telegram 大多数时候会将消息打包到 msg_container 中。

例如,您可能会获得先前消息的 Msg_acks 以及上一条消息的预期响应。

您最好的选择是设置您的代码来处理接收到的容器的情况,检查容器中的项目数,然后循环接收到的消息,将不同的消息类型传递给适当的处理程序。

另请注意,您可能会得到一个包含 gzip 压缩消息的 rpc_response,在这种情况下,您需要解压缩,然后处理您的消息内容,其中也可能包含消息集合

干杯

于 2016-02-20T00:12:18.267 回答