游标不是页码
Telegram 的列表方法可能组合 offset_id、add_offset、日期或范围参数,具体语义以该方法为准。许多消息列表按时间倒序返回,不能将网页中的第几页直接转换为固定消息 ID。
部分列表支持 Hash 和 NotModified 响应。这里的 Hash 是缓存协议的一部分,与开发者应用的 API Hash 完全不同。
搜索的范围先于关键词
messages.search 与全局搜索面对不同范围;媒体过滤器可以限制照片、视频或其他消息类别。公开频道帖子等能力还存在独立方法及条件。界面应先说明搜索范围,再让用户输入关键词。
聊天列表的实现建议
保存服务器认可的下一页游标,并用对话标识与消息标识去重。向上加载旧消息时固定一条可见消息作为锚点,插入完成后恢复其位置,避免列表跳动。搜索条件变化应丢弃旧请求的结果,不能混入新列表。
测试空结果、部分结果、重复消息、加载期间新消息到达与历史删除。是否结束应按方法规则判断,不能笼统地把“本页不足条数”当作所有接口的结束条件。