logo NodeSeekbeta

telegram双向聊天机器人

🚀 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 数据库

  1. 登录 Cloudflare Dashboard -> Workers 和 Pages -> D1。
  2. 点击 创建数据库,命名为 tg-bot-db (或者你喜欢的名字)。
  3. 点击创建即可,无需做任何其他操作(代码会自动建表)。

步骤二:配置 Turnstile 验证

  1. 在 Cloudflare 侧边栏选择 Turnstile -> 添加站点。
  2. 站点名称:任意填写。
  3. 域:填写你即将分配给 Worker 的域名 (例如 你的worker名.你的子域.workers.dev),或者填写 workers.dev。
  4. 模式:选择 托管 (Managed)。
  5. 创建后,复制 站点密钥 (Site Key) 和 密钥 (Secret Key) 备用。

步骤三:创建 Worker

  1. 进入 Workers 和 Pages -> 创建 Worker。
  2. 命名 (如 tg-contact-bot) -> 部署。
  3. 点击 编辑代码。
  4. 全量覆盖:删除所有默认代码,将 worker.js 的完整代码粘贴进去。
  5. 暂时不要点击部署,先进行下一步配置。

步骤四:绑定 D1 数据库

  1. 在代码编辑页面的左侧/上方设置中,找到 设置 (Settings) 或 绑定 (Bindings)。
  2. 添加 D1 数据库绑定:
    • 变量名称 (Variable Name):必须填写 TG_BOT_DB (注意大小写)。
    • 数据库:选择步骤一创建的数据库。
  3. 保存设置。

步骤五:配置环境变量

  1. 在 Worker 的 设置 -> 变量 中,添加以下 6个 必备变量:

    变量名称 示例值 说明
    BOT_TOKEN 12345:AAH... 你的 Bot Token
    ADMIN_IDS 123456, 789012 管理员ID,多人用英文逗号分隔
    ADMIN_GROUP_ID -100123456789 开启话题的超级群组 ID
    WORKER_URL https://xxx.workers.dev 你的 Worker 完整访问链接 (不带末尾斜杠)
    TURNSTILE_SITE_KEY 0x4AAAA... 步骤二获取的站点密钥
    TURNSTILE_SECRET_KEY 0x4AAAA... 步骤二获取的密钥
  2. 点击 部署 (Deploy) 使代码和配置生效。

步骤六:设置 Webhook

  1. 在浏览器地址栏输入以下 URL 并回车,将 Bot 连接到 Worker:
    https://api.telegram.org/bot<你的BOT_TOKEN>/setWebhook?url=<你的WORKER_URL>

灵感源于第一版的TGbot-D1,实际上是根据自己需求完全重构了的,详情可见文档。

原项目地址:
https://github.com/moistrr/TGbot-D1

我的项目地址:
https://github.com/huliyoudiangou/TG_Chat_Bot-D1

123
  • 感谢大家支持,有问题可以提出,随便上几张图
    RNTt4Xk7fd5E66cjCp5SGEc69s4K0KnO.webp
    GXPzBJ9ceVNdXp6yh4zbkfY4FM6LtPtq.webp
    9PHiKisIGBuaEseSWpWaHwb1Q179Pxf0.webp
    PfvUW6BfsRGMeXnjgLvoIZxAuqBGXUgA.webp

  • 膜拜大佬

  • 大佬牛逼

  • 牛逼

  • 棒

  • 大佬牛逼

  • 自顶一下

  • 真是需要的。绑定
    Telegram 管理员群组 ID (必须是开启了话题功能的超级群组,ID 以 -100 开头,通过 @raw_data_bot 获取)。

    这个是不是只要普通群开个话题功能就可以了

  • 看晕了,是群组用的嘛?不是针对个人

  • 音海的大佬?

123

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72033位seeker

🎉欢迎新用户🎉