烧饼论坛 LZ.SB
登录

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

1513
  • crazypeace
    UID 313Lv.3 初识社区

    前言

    之前 用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 只有进群的人会看到, 其它群友不会看到.

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

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

    Github

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

  • 收藏支持反对打赏

3 条回复

  • PassionAries
    UID 6283Lv.15 交流能手
    #1

    bd

  • BSD
    UID 755Lv.8 热心新人
    #2

    搬到 CF 不错

  • Chahucesu
    UID 7387Lv.3 初识社区
    #3

    不错,加我

发表回复