电报防广告机器人 实现发言验证的功能 tg-send-msg-exam-bot-worker 迁移到 cloudflare worker
前言
之前 用python实现了自用的简易防广告机器人, 实现发言验证的功能.
最近服务器到期了, 突然心里动了一个念头, 能转换成cloudflare worker吗?
面向Agent开发
Hermes 对接 白嫖 公益站 的 deepseek-v4-flash
* 本次开发并不是简单的one-shot. 本身这个最终效果, 我也不是在一开头就想好的. 我是在整个过程中, 逐渐想清楚我的需求的.
以下记录一些开发方案的思路.
加群验证机器人考虑过的问题, 此处略.
我的python原方案有一个白名单列表, 验证通过的用户userid会保存在里面. 这样bot发现群里面有新消息时, 会检查发消息的人是不是在白名单里面.
这个信息需要保存, 这是逃不掉的事情. 所以我就用了一个KV
结果, 在测试过程中, 发现KV对worker来说, 有状态延迟的问题.
具体表现为:
- 用户完成了整个验证流程. KV中有白名单记录
- 我操作cloudflare面板从KV白名单记录中把用户删除, 再触发一次测试
- 用户在群组中发言, 并没有被禁言.
- 过了几分钟之后, 用户再次发言, 被禁言了 (正确的, 预期的 结果)
好消息是, 正常流程中, worker在KV白名单记录中保存了用户, 用户接着发消息, 是正常的.
也就是说, worker在操作了KV后, 很短的时间内, 再访问KV, 使用的是自己刚刚操作的那一份KV数据.
但是! 我要说但是了!
天知道我的鬼脑子是怎么转的. 我居然想到telegram用户是可以设置自定义标签的. 这是今年开放的新鲜功能, 以前只有群管理员能设置自定义标签, 今年开放给全体群成员了.
所以, 我可以把有没有自定义标签当作判断是否白名单的信息.
这样就不需要操作KV了. 哈!哈!哈!
* 我的群是翻墙群, 我就让脚本设置FQer的自定义标签. 如果你的群是粉丝群, 也可以设置成 TUTU's Friend 之类的. 又或者你的群是玩Agent的, 就可以设置成CLAWer哈哈

我的python原方案有一个功能是: 在禁言用户后, 将用户在群组中发的消息转到一个仓库频道, 当用户完成验证后, 从仓库频道把消息再转发回群组中. 为了保存用户userid与仓库频道中的消息id的这个对应关系, 是需要写KV的. 我很喜欢这个功能, 所以我保留了下来, 虽说有KV的消耗.
如果你希望KV操作零消耗, 你不绑定这个KV就是了. (相应的, 也不需要配置 STORAGE_CHANNEL_ID 这个变量)