开发文档

Telegram 消息分页、搜索与缓存

区分消息 ID 游标、搜索过滤器和缓存 Hash,避免 Telegram 聊天历史加载重复、跳页或过早结束。

GetTGAPI 编辑团队更新于
文档解读核对日期

依据官方资料整理,由 GetTGAPI 独立维护。 文档目录与术语表 →

本页内容
  1. 游标不是页码
  2. 搜索的范围先于关键词
  3. 聊天列表的实现建议

游标不是页码

Telegram 的列表方法可能组合 offset_id、add_offset、日期或范围参数,具体语义以该方法为准。许多消息列表按时间倒序返回,不能将网页中的第几页直接转换为固定消息 ID。

部分列表支持 Hash 和 NotModified 响应。这里的 Hash 是缓存协议的一部分,与开发者应用的 API Hash 完全不同。

搜索的范围先于关键词

messages.search 与全局搜索面对不同范围;媒体过滤器可以限制照片、视频或其他消息类别。公开频道帖子等能力还存在独立方法及条件。界面应先说明搜索范围,再让用户输入关键词。

聊天列表的实现建议

保存服务器认可的下一页游标,并用对话标识与消息标识去重。向上加载旧消息时固定一条可见消息作为锚点,插入完成后恢复其位置,避免列表跳动。搜索条件变化应丢弃旧请求的结果,不能混入新列表。

测试空结果、部分结果、重复消息、加载期间新消息到达与历史删除。是否结束应按方法规则判断,不能笼统地把“本页不足条数”当作所有接口的结束条件。