如何通过Node.js的电报数据库库(TDLib)请求用户的所有聊天/群组

时间:2019-04-06 18:54:11

标签: node.js api node-telegram-bot-api tdlib

电报中的官方示例说明,要使用getChats()命令,需要设置两个参数'offset_order'和'offset_chat_id'。 我正在使用此node.js wrapper for the TDLib。 因此,当我将getChats()与以下参数一起使用时:

'offset_order': '9223372036854775807',
'offset_chat_id': 0,
'limit': 100

就像在official docs中所解释的那样:

  

例如,要从头开始获取聊天列表,   offset_order应该等于2 ^ 63-1

结果,我从用户列表的顶部获得100个聊天记录。

我不明白的是我如何遍历该列表?如何使用API​​分页?

当我尝试从前100个中间输入一个合法的chat_id时,我仍然会获得相同的前100个,因此似乎没什么区别。

如果我将offset_order更改为任何其他数字,则会得到一个空的聊天清单作为回报...

在这里完全丢失了,因为我发现every single example说的话与官方文档相同,即如何获得前100名。

1 个答案:

答案 0 :(得分:0)

遇到了同样的问题,尝试了不同的方法并重新阅读文档很长时间,这里是一个决定:

  1. 像使用 getChats '9223372036854775807' 参数一样执行 offset_order
  2. 使用您上次聊天的 ID 执行 getChat 请求。这是一个离线请求,只是给 tdlib。
  3. 这里有一个带有positions属性的聊天对象——从这里获取一个位置,如下所示:
  positions: [
    {
      _: 'chatPosition',
      list: [Object],
      order: '6910658003385450706',
      is_pinned: false
    }
  ],
  1. 下一个请求 - getChats - 使用 (3) 中的 positions[0].order 作为 offset_order
  2. 如果有更多聊天,请转到 (2)

来到这里并不容易,所以如果它可以帮助像我一样来自谷歌的任何人,我会很高兴:)