前言

之前 用python实现了自用的简易防广告机器人, 实现发言验证的功能.

最近服务器到期了, 突然心里动了一个念头, 能转换成 cloudflare worker 吗?

面向 Agent 开发

Hermes 对接 白嫖 公益站 的 deepseek-v4-flash

* 本次开发并不是简单的 one-shot. 本身这个最终效果, 我也不是在一开头就想好的. 我是在整个过程中, 逐渐想清楚我的需求的.

以下记录一些开发方案的思路.

加群验证机器人考虑过的问题, 此处略.

我的 python 原方案有一个白名单列表, 验证通过的用户userid会保存在里面. 这样 bot 发现群里面有新消息时, 会检查发消息的人是不是在白名单里面.

这个信息需要保存, 这是逃不掉的事情. 所以我就用了一个 KV

结果, 在测试过程中, 发现 KV 对 worker 来说, 有状态延迟的问题.

具体表现为:

  1. 用户完成了整个验证流程. KV 中有白名单记录
  2. 我操作 cloudflare 面板从 KV 白名单记录中把用户删除, 再触发一次测试
  3. 用户在群组中发言, 并没有被禁言.
  4. 过了几分钟之后, 用户再次发言, 被禁言了 (正确的, 预期的 结果)

好消息是, 正常流程中, worker 在 KV 白名单记录中保存了用户, 用户接着发消息, 是正常的.
也就是说, worker 在操作了 KV 后, 很短的时间内, 再访问 KV, 使用的是自己刚刚操作的那一份 KV 数据.

但是! 我要说但是了!

天知道我的鬼脑子是怎么转的. 我居然想到 telegram 用户是可以设置自定义标签的. 这是今年开放的新鲜功能, 以前只有群管理员能设置自定义标签, 今年开放给全体群成员了.
所以, 我可以把有没有自定义标签当作判断是否白名单的信息.

这样就不需要操作 KV 了. 哈! 哈! 哈!

* 我的群是翻墙群, 我就让脚本设置FQer的自定义标签. 如果你的群是粉丝群, 也可以设置成 TUTU's Friend 之类的. 又或者你的群是玩Agent的, 就可以设置成CLAWer哈哈

我的 python 原方案有一个功能是: 在禁言用户后, 将用户在群组中发的消息转到一个仓库频道, 当用户完成验证后, 从仓库频道把消息再转发回群组中. 为了保存用户userid仓库频道中的消息id的这个对应关系, 是需要写 KV 的. 我很喜欢这个功能, 所以我保留了下来, 虽说有 KV 的消耗.

如果你希望 KV 操作零消耗, 你不绑定这个 KV 就是了. (相应的, 也不需要配置 STORAGE_CHANNEL_ID 这个变量)

Github

https://github.com/crazypeace/tg-send-msg-exam-bot-worker