🚀 Telegram 双向机器人 Cloudflare Worker (v3.27 终极增强版)
📖 项目简介
这是一个基于 Cloudflare Worker 和 D1 数据库 构建的高性能 Telegram 双向机器人。它不仅能将用户的私聊消息转发到管理员群组的话题中,还内置了完整的 CRM(客户关系管理)、防骚扰系统 和 自动化工作流。
版本特性 (v3.27):
- ⚡ 极致响应:修复了所有已知交互延迟,操作立即反馈。
- 🛡️ 自动维护:数据库表结构自动初始化,无需手动执行 SQL。
- 🧠 智能聚合:未读消息和黑名单采用“单人单卡”机制,拒绝刷屏。
- 🔄 双向同步:黑名单状态在个人话题与黑名单话题间实时同步。
✨ 核心功能
1. 📨 双向消息中继
- 自动话题:每个用户私聊会自动在管理员群组创建一个独立话题(Topic)。
- 双向回复:管理员在话题内回复,机器人自动转发给用户;用户回复,自动转入话题。
2. 📇 CRM 客户管理系统 (新增)
- 用户备注:管理员可点击资料卡上的 ✏️ 备注 按钮,为用户添加自定义标签(如:VIP客户、待退款)。
- 实时刷新:修改备注后,所有存在的资料卡(话题顶部、未读通知)会自动同步更新。
- 资料卡追踪:话题顶部始终置顶最新的用户资料卡。
3. 📥 聚合收件箱 (One Card Policy)
- 防刷屏机制:无论用户发多少条消息,“🔔 未读消息” 聚合话题中,每个用户永远只保留一张最新的通知卡片。
- 阅后即焚:点击通知卡片下的 ✅ 已阅/删除,卡片即刻消失,且重置该用户的通知冷却时间。
- 一键直达:通知卡片包含跳转按钮,直接定位到该用户的专属聊天话题。
4. 🚫 黑名单隔离系统
- 双向同步:手动屏蔽或触发关键词自动封禁后,会在 “🚫 黑名单” 话题生成卡片。
- 一键解封:无论是在个人话题还是黑名单话题点击解封,状态双向同步,黑名单卡片自动销毁。
- 重连机制:被封禁用户发送 /start 可触发强制重置流程,重新进行验证。
5. 🛡️ 安全与过滤
- Cloudflare Turnstile:强大的五秒盾人机验证。
- 问答验证:自定义第二道验证问题。
- 内容过滤:可开关 语音/贴纸/链接/媒体/转发消息 的接收权限。
- 关键词自动封禁:设置屏蔽词,触发次数达到阈值自动拉黑。
6. 🌙 营业状态管理
- 一键切换:在面板中切换“营业中”或“休息中”。
- 自动回复:休息模式下,用户发消息会收到预设的忙碌提示(带防抖机制,不烦人)。
🛠️ 部署指南 (保姆级教程)
准备工作
- Cloudflare 账号。
- Telegram Bot Token (通过 @BotFather 获取)。
- Telegram 管理员群组 ID (必须是开启了话题功能的超级群组,ID 以 -100 开头,通过 @raw_data_bot 获取)。
- 管理员 ID (你自己的 TG ID,通过 @raw_data_bot 获取)。
步骤一:创建 D1 数据库
- 登录 Cloudflare Dashboard -> Workers 和 Pages -> D1。
- 点击 创建数据库,命名为
tg-bot-db(或者你喜欢的名字)。 - 点击创建即可,无需做任何其他操作(代码会自动建表)。
步骤二:配置 Turnstile 验证
- 在 Cloudflare 侧边栏选择 Turnstile -> 添加站点。
- 站点名称:任意填写。
- 域:填写你即将分配给 Worker 的域名 (例如
你的worker名.你的子域.workers.dev),或者填写workers.dev。 - 模式:选择 托管 (Managed)。
- 创建后,复制 站点密钥 (Site Key) 和 密钥 (Secret Key) 备用。
步骤三:创建 Worker
- 进入 Workers 和 Pages -> 创建 Worker。
- 命名 (如
tg-contact-bot) -> 部署。 - 点击 编辑代码。
- 全量覆盖:删除所有默认代码,将
worker.js的完整代码粘贴进去。 - 暂时不要点击部署,先进行下一步配置。
步骤四:绑定 D1 数据库
- 在代码编辑页面的左侧/上方设置中,找到 设置 (Settings) 或 绑定 (Bindings)。
- 添加 D1 数据库绑定:
- 变量名称 (Variable Name):必须填写
TG_BOT_DB(注意大小写)。 - 数据库:选择步骤一创建的数据库。
- 变量名称 (Variable Name):必须填写
- 保存设置。
步骤五:配置环境变量
-
在 Worker 的 设置 -> 变量 中,添加以下 6个 必备变量:
变量名称 示例值 说明 BOT_TOKEN12345:AAH...你的 Bot Token ADMIN_IDS123456, 789012管理员ID,多人用英文逗号分隔 ADMIN_GROUP_ID-100123456789开启话题的超级群组 ID WORKER_URLhttps://xxx.workers.dev你的 Worker 完整访问链接 (不带末尾斜杠) TURNSTILE_SITE_KEY0x4AAAA...步骤二获取的站点密钥 TURNSTILE_SECRET_KEY0x4AAAA...步骤二获取的密钥 -
点击 部署 (Deploy) 使代码和配置生效。
步骤六:设置 Webhook
- 在浏览器地址栏输入以下 URL 并回车,将 Bot 连接到 Worker:
https://api.telegram.org/bot<你的BOT_TOKEN>/setWebhook?url=<你的WORKER_URL>
灵感源于第一版的TGbot-D1,实际上是根据自己需求完全重构了的,详情可见文档。
感谢大家支持,有问题可以提出,随便上几张图




膜拜大佬
大佬牛逼
牛逼
棒
大佬牛逼
自顶一下
真是需要的。绑定
Telegram 管理员群组 ID (必须是开启了话题功能的超级群组,ID 以 -100 开头,通过 @raw_data_bot 获取)。
这个是不是只要普通群开个话题功能就可以了
看晕了,是群组用的嘛?不是针对个人
音海的大佬?