修改 forkgram/tdesktop 实现 跳转到前一条后一条@我的消息

前言

我们之前已经实现了 有@我消息的群 置顶 方便我们"快速到达战场"
又进一步实现了 跳转到最后一条@我的消息

但是, 如果群组里面新 @我的消息多于一条呢? 

面向Agent开发

Hermes 对接 oc/deepseek-v4-flash-free

下面的引用框里面都是我发给Agent的自然语言
基于 https://github.com/crazypeace/forkgram-tdesktop/tree/goto-last-mention 的代码, 进行增强开发
当 点击 "Go to the last msg mentioned me" 之后, 实现了跳转消息的效果,
然后, 在这个时候, 再次点击 "Go to the last msg mentioned me", 希望能继续跳转到再上一条 @消息
你说一下你是怎么理解 我的需求的, 与我讨论.
Agent分析了一通, 问我, 向前跳转的时候, 以什么为锚点?
是把上一次跳转的消息id保存下来, 作为锚点?
还是以当前群组消息视口可见的消息为锚点?
锚点=当前视口
把原来的 "Go to the last message mentioned me" 菜单项 改为 "Go to the Pre msg @me"
效果为, 以当前视口为锚点, 跳转上一条 @我 的消息
增加一项 "Go to the Next msg @me"
效果为, 以当前视口为锚点, 跳转下一条 @我 的消息

成果

群组菜单

跳转效果

Github

代码

Release

========

后记

跳转下一条 @我 的消息 这个功能有缺陷
Telegram API里面, 搜索群组消息是 messages.search, 这个API只能从指定消息id往 旧时间的方向搜索, 不能往新时间的方向搜索. 所以严格意义上这个功能是无法实现的.
现在实施的本质算法是:
先从群组的最新消息作为锚点, 向旧时间的方向搜索10条 @我 的消息, 得到这些消息的id; (1)
获取当前群组消息视口可见的消息id; (2)
从 (1) 中得到的 10个 消息id中, 找到刚好比 (2) 的id 大的那一个, 跳转.
换句话说, "跳转下一条 @我 的消息 这个功能" 只在群组最后10条@我的消息范围内有效.

评论

The Hot3 in Last 7 Days

用 Cloudflare worker 抓取 喷嚏网 浮世汇 生成 RSS

白嫖worker 自建短链服务 Url-Shorten-Worker 变身文件保管站 File Storage 保存到 R2对象存储 搭建手册

KV-woker 纯练手项目 保护 _ 开头的 Key VS code 重构 JS 代码 提取代码为函数