撤回体系重构:撤回 · 恢复 · 定位 ↩️♻️📍

这次重构做了什么

以前的 撤回 只能撤最后一笔、只能撤一次、超过 1 小时就撤不了;撤错了没有后悔药;想找"这笔是哪条消息记的"只能在群里往上翻。

现在这几件事是一套体系:记错的账任意一笔都能撤,撤错的都能恢复,找不到消息可以一键定位。

想做什么发这个英文谁能用
撤回最新一笔(可以连着撤)撤回undo操作人
撤回指定的一笔回复那条记账消息,发 撤回undo操作人
恢复上一次撤回的那笔恢复redo操作人
恢复指定的一笔回复那条记账消息,发 恢复redo操作人
跳到某笔记账的原消息超级群点账单里的时间;普通群点 📍 记账定位 操作人

三者是配套的:定位找到那条消息 → 回复它撤回 → 撤错了恢复。

对比以前现在
能撤哪笔只有最后一笔任意一笔
连续撤不能能,一直撤到空
时间限制1 小时内无(本账单期内)
撤错了只能重新记恢复 原样找回
找原消息手动翻一键定位

一、撤回

撤回最新一笔

直接发 撤回(或 undo),撤掉当前账单里时间最新的那笔。再发一次,撤现在最新的那笔,可以一直撤到账单为空。

机器人回复第一行写明撤了哪笔,下面是最新账单:

✅ 已撤回:张三 14:19:14  600 / 243 = 2.47U
本账单还有 1 笔撤回记录可用 恢复 找回

入款:(2笔)
张三 14:18:16  300 / 243 = 1.23U
张三 14:19:05  100 / 243 = 0.41U
...

撤回指定的一笔

  1. 找到那条记账消息(+100 / 下发100,找不到用下面的定位)。
  2. 回复它,发 撤回。
  3. 机器人删掉这一笔、重算账单,回复同上。

入款和下发都能撤。

规则

  • 群必须处于记账中(已 开始),仅操作人可用。
  • 只能撤当前进行中账单里的记录,已 结束 的账单撤不了。
  • 回复撤回时,回复的必须是发起记账的那条消息本身,回复机器人的账单、回复别的聊天都不认。
  • 撤回的是记录本身,账单汇总按剩下的记录重新算,其他记录不动。

二、恢复

恢复上一次撤回

发 恢复(或 redo),把最近一次撤回的那笔原样放回账单。连着撤了 3 笔,就可以连着恢复 3 次,顺序正好倒过来。

♻️ 已恢复:张三 14:19:14  600 / 243 = 2.47U

入款:(3笔)
...

恢复指定的一笔

回复当初记账的那条消息(+100),发 恢复,就恢复那一笔,不管它是第几次撤的。

规则

  • 恢复回去的记录原位置、原时间、原备注,账单里回到它本来的行,不是变成新的一笔。之后还能再定位、再撤回。
  • 恢复用的是这笔记录当时的费率和汇率,中途改过费率也能精确加回去。
  • 撤回记录只在本账单期内保留:结束(含日切自动结束)之后清空,新账单里恢复不了上一期的。
  • 撤空以后如果切换了账单模式(币本位 ↔ U本位),之前撤回的记录不能再恢复(算法不同)。
  • 每次撤回 / 恢复后,机器人会提示"本账单还有 N 笔撤回记录可用 恢复 找回"。

提示语对照

机器人说意思
本账单没有可恢复的撤回记录这一期没撤过,或已经全部恢复了
这条消息对应的记录不在撤回记录里回复的消息不是本期撤回过的那笔
账单模式在撤回之后切换过,这笔记录无法恢复见上面的模式规则
这笔记录刚刚已经被撤回了 / 已经恢复过了两个人同时操作了同一笔,后一个人的操作没执行,发 +0 看最新账单即可

三、定位

你的群是哪一种

机器人按群类型自动判断,不用设置:

  • 账单里的时间是蓝色可点的 → 超级群,直接点时间。
  • 账单底部第一行多了 📍 记账定位 → 普通群,点按钮进菜单。

超级群:点时间

账单里每一笔的时间都是链接。点 14:19:05,聊天窗口直接滚到当时那条 +100 并高亮,不跳出群、不开网页。

普通群:📍 记账定位 菜单

普通群没有"消息链接"(Telegram 的限制),所以用菜单。整个过程都在同一条账单消息上换按钮,不会多发消息:

账单底部          [📒 完整账单] [🎃 数字格式] [📍 记账定位]
        ↓ 点 📍 记账定位
                  [📥 入款] [📤 出款] [✖ 关闭]
        ↓ 点 📥 入款
                  [📍14:18:16] [📍14:19:05] [📍14:19:14]   ← 和账单顺序一致
                  [◀ 返回]
        ↓ 点 📍14:19:05
机器人回一条  📍 张三 14:19:05 100 / 243 = 0.41U   ← 引用了那条 +100
        ↓ 点这条消息顶部的引用块
聊天窗口滚到原来那条 +100
  • 每个群只保留最新一条 📍 提示:打开菜单或再点别的时间时,上一条自动删掉(超过 48 小时的 Telegram 不让机器人删,会留着)。
  • 时间按钮最多 5 个,就是账单里显示的那几笔。
  • 只有操作人能点。纯净模式的群没有底部按钮,也就没有这个菜单(超级群的时间链接不受影响)。

什么情况定位不了

  • 重构之前记的账:那时候还没记消息编号,没有链接和按钮。
  • 不是在群里发消息记的账:API、自动转发、代付进来的,没有原消息可跳。
  • 原消息被删了:提示"原记账消息已被删除,无法定位"。

四、常见问题

Q:手滑连按了几次 撤回 怎么办?
A:每次回复第一行都写着撤了哪笔,连发几次 恢复 就一笔笔回来了。

Q:撤回之后别人又记了新账,还能恢复吗?
A:能。恢复只是把那笔放回它原来的位置,和后面新记的互不影响。

Q:我的群时间不是蓝色的,也没有 📍 记账定位?
A:先记一笔新账看看;重构前的旧记录本来就没有。新记的也没有,看看是不是纯净模式。

Q:普通群能不能也做成点时间?
A:做不到,Telegram 不给普通群的消息做链接。升级成超级群会改群 ID,升级前先联系客服,否则群的费率、汇率、操作人、账单会对不上。

Q:结束账单以后发现撤错了?
A:结束时撤回记录已清空,只能在新账单里重新记这一笔。所以建议结束前 +0 复核。

注意事项

  • 撤回和恢复都是改账的操作,做完建议 +0 复核一遍。
  • 定位、指定撤回、指定恢复都靠记账时那条消息的编号,不要删记账消息。