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

0 条回复
15 次浏览

前言

之前 用 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.

我最终选择的方案是:

  1. 进群通知使用 Telegram group 电报群组设置 欢迎信息 Welcome Message 只有进群的人会看到, 其它群友不会看到.

image|687x500

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

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

Github

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

发表一个评论

R保持