什么是错误代码35,由telegram.org服务器返回

时间:2016-09-15 16:22:05

标签: python api telegram

我的客户经常从电报服务器收到以下消息容器,似乎是随机的:

{'MessageContainer': [{'msg': {u'bad_msg_notification': {u'bad_msg_seqno': 4, u'bad_msg_id': 6330589643093583872L, u'error_code': 35}}, 'seqno': 4, 'msg_id': 6330589645303624705L}, {'msg': {u'msgs_ack': {u'msg_ids': [6330589643093583872L]}}, 'seqno': 4, 'msg_id': 6330589645303639041L}]})

您可能会注意到:'错误代码':35 ,但没有说明该错误代码的含义。到目前为止,我一直忽视它,但这不是一个好的长期解决方案恕我直言。任何想法错误代码意味着什么?

2 个答案:

答案 0 :(得分:2)

bad_msg_seqno

相关的一组错误

来自文档:

  

此处,error_code还可以采用以下值:

     
      
  1. msg_seqno太低(服务器   已经收到一条消息,其msg_id较低,但有一个   更高或相等和奇数seqno)
  2.   
  3. msg_seqno太高(同样,   有一个消息具有更高的msg_id,但有一个更低或   一个相等和奇数的seqno)
  4.   
  5. 一个偶然的msg_seqno预期(无关紧要   消息),但奇怪的收到
  6.   
  7. 奇数msg_seqno预期(相关   消息),但即使收到
  8.   

正式定义: Message Sequence Number (msg_seqno)

  

32位数字,等于“内容相关”数字的两倍   消息(需要确认的消息,特别是那些消息   在此消息之前由发件人创建的不是容器   如果当前消息是a,则随后递增1   与内容相关的消息。始终在其后生成容器   全部内容;因此,它的序列号大于或   等于其中包含的消息的序列号。

备注:

  1. 每个新会话都从seq_no = 1开始 - > (0 * 2)+ 1
  2. 您发送的每个序列号计算如下:(number_of_content_messages_ already_sent * 2)+ 1因此您发送的所有序列号始终为奇数
  3. 容器消息seq_no ==其内容消息的最大seq_no
  4. 服务器将始终使用正确的server_seq_no回复您,该server_seq_no应该比您的 正确 max seq_no更大1。
  5. 因此,一个好的check / seq_no校正方案将使用最新收到的current-expected(应该始终是偶数)来确认您的sed -i '$ s/,/;/g' abc.java seq_no应该是什么,并根据需要进行调整。
  6. 上述技术对我来说完全避免了这些间歇性的错误信息。

答案 1 :(得分:1)

正如Telegram API docs所说,代码35的错误是"奇数msg_seqno预期(相关消息),但即使收到"

相关问题