电报防广告机器人 实现加群验证的功能 tg-join-group-exam-bot-worker 迁移到 cloudflare worker
前言
之前 用 python 实现了自用的简易防广告机器人 , 实现加群验证的功能.
最近服务器到期了, 突然心里动了一个念头, 能转换成 cloudflare worker 吗?
面向 Agent 开发
Hermes 对接 白嫖 公益站 的 deepseek-v4-flash
* 本次开发并不是简单的 one-shot. 本身这个最终效果, 我也不是在一开头就想好的. 我是在整个过程中, 逐渐想清楚我的需求的.
以下记录一些开发方案的思路.
Cloudflare 的 worker 是一个无状态的服务, 如果需要记录什么信息的话, 要么用 KV, 要么用 D1.
免费 plan 的 KV 一天 1000 次写入.
我的 python 原方案是一个题库(虽说只有 3 个题, 哈哈), 从中随机抽取题目. 在为每个用户抽取题目的时候, 就生成了答案, 然后每次检查用户的回答和答案是否匹配.
那么, 保存这个答案就需要写 KV, 也就是每个用户要写 1 次 KV
我一开始想说, 这个答案我每次实时计算呢? 这样就不保存答案了. 那么就要保存用户正在回答哪个题目, 还是要写 1 次 KV
好了, 进一步的, 把用户回答哪个题目搞成伪随机, 这样就可以通过比如用户的 userid计算得到了.
再进一步的, 把当前日期和用户的 userid一起组合成伪随机的种子, 这样过一天题目就有可能会改变.
我的 python 原方案会在群组中发通知消息, 通知用户去进行验证, 验证通过也会发通知说明结果. 而且有自动定时删除这些通知消息的功能.
在 worker 的方案中, 就必须写 KV 保存未来要删除的消息的 id. 然后用 worker 的定时器 cron 驱动 worker 去检查 KV 并删除消息.
如果用户进群时通知 1 条, 验证通过通知 1 条, 那么每个用户要写 2 次 KV.
我最终选择的方案是:
- 进群通知使用 Telegram group 电报群组设置 欢迎信息 Welcome Message 只有进群的人会看到, 其它群友不会看到.

- 验证通过的消息非常短小. 当然, 你也可以不发这条通知消息.

综上, 整个 加群验证电报防广告机器人 完全不使用 KV. 那么免费 plan 的 worker 有一天 100K 的调用额度就完全不用担心了.