电报防广告机器人 实现加群验证的功能 tg-join-group-exam-bot-worker 迁移到 cloudflare worker

前言

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

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


面向Agent开发

Hermes 对接 白嫖 公益站agentrouter 的 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.

我最终选择的方案是:
1. 进群通知使用 Telegram group电报群组设置 欢迎信息Welcome Message 只有进群的人会看到, 其它群友不会看到.

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


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


Github

https://github.com/crazypeace/tg-join-group-exam-bot-worker


评论