【问题标题】:Telegram API Layer54 C# - QuestionsTelegram API Layer54 C# - 问题
【发布时间】:2016-08-24 12:35:34
【问题描述】:

我正在尝试利用 C# 的 API 层 54 为 Telegram 编写一个简单的客户端。

我在这里遵循计划:https://github.com/telegramdesktop/tdesktop/blob/master/Telegram/SourceFiles/mtproto/scheme.tl

我是从 Sochix 之前的工作开始的:https://github.com/sochix/TLSharp,但是这个实现是指 API 第 23 层,基本上几乎所有对象的解析都是不同的。

现在,由于没有关于第 54 层的文档(或者至少我在网上找不到任何东西),而且主站点上的文档不太好,我有几个问题:

1- 使用我通过“invokeWithLayer”请求指定的 InitConnection 方法,我将使用第 54 层。鉴于此,我希望以下所有答案都返回尊重第 54 层方案中指定的代码的对象,但有时会发生Telegram 服务器用旧 API 层的对象代码回答我,有人知道为什么会发生这种情况吗?

2-关于诸如用户/消息等标记的对象...,我找到了这个旧答案Handling "flags" types in telegram's TL schema language,但是是否有关于如何解码和编码此类对象的官方文档?此外,按照查尔斯提出的答案,不应该是 BAND(flags,1^2) == flags == true 来检查是否已发送标记字段?

3- 在开发这样的库期间,我必须进行大量测试以了解我的代码是否正常工作,如何避免“请求过多”错误?我尝试重用 TLSharp 创建的 session.dat,但似乎不起作用。

非常感谢

【问题讨论】:

  • 响应的哪些部分在旧 API 层中?
  • 嗨,查尔斯,很高兴见到你! :-) 我在公式上粘贴了错误(显然是 2^N 而不是 1^2 ),我的意思是检查是否应该是 BAND(flags,2^N) === flags 而不是 BAND(flags ,2^N) === 真。 sentCode 对象和 auth.Authroization 对象来自旧层,这似乎也是随机发生的......
  • 好吧,sentCode 和 auth.Authorization 肯定是不同的: auth.sentCode#2215bcbd 用于第 2 层 auth.sentCode#5e002502 第 54 层 如前所述,有时它会使用第 2 层代码回复我,而其他时候使用层54 码...可能是 dc?
  • @3 为什么会出现“请求过多”错误?
  • 您的问题的第 2 点)在标志上...

标签: c# telegram


【解决方案1】:

我会在这里发布答案,也许它们将来会对某人有用:

1) 我发现问题与在 Session.cs(TLSharp 库)中配置的错误 DC 有关。

2) 正如查尔斯指出的 BinAND(flag,2^N) = 2^N。

示例:当我们读取标志时:# field (an int32) from an object 我们有:

flag: 0000 0010 0001 0011 

如果我们想知道标志 self:flags.10?true 是否设置,我们必须测试标志 int32 中的第 10 位,所以:

0000111000010011 &
0000010000000000 =
------------------
0000010000000000 -> FLAG SETTED!

[WARNING] 如果设置了标志并且标志的类型是 ?true,你不必从二进制流中读取 _true 代码,而如果它是另一种类型,例如 'int' 你应该从流中读取其值。

3) 此错误由文件 MTProtoSender.cs 中的 TLSharp 库的当前实现自动处理。当您收到“FLOOD_WAIT”错误时,您必须等待 X 秒作为 Telegram 文档报告:

FLOOD_WAIT_X:需要等待 X 秒(其中 X 是一个数字)

休眠 X 秒后,您可以返回进行 RPC 到 Telegram 服务器。但是,在很多请求 X 变成大约 20 小时后,这是一个问题......

【讨论】:

    【解决方案2】:

    查看TLSharp的最新版本,它支持第53层。并且解码没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-29
      • 2022-01-26
      • 2016-01-23
      • 2014-10-21
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      相关资源
      最近更新 更多