【保姆级】零成本搭建 Telegram 私聊转发客服机器人 (Cloudflare Workers + D1)

如果你想拥有一个 Telegram 客服机器人,实现“用户私聊机器人 -> 消息自动转发到群组话题 -> 管理员在群组回复 -> 自动转发回用户”的无缝沟通体验,但又不想购买服务器,那么这篇教程就是为你准备的。

本文将教你利用 Cloudflare Workers(无服务器计算)和 D1 数据库,零成本部署一个功能强大的双向转发机器人。

💡 核心功能

这个脚本不仅仅是简单的转发,它包含了一套完整的管理系统:

  • Topic 分流:利用 Telegram 群组的“话题”功能,每个用户自动创建一个独立话题,聊天记录清晰不混乱。
  • 双向通信:完美支持文本、图片、视频、文件、贴纸的双向转发。
  • 自带数据库:使用 D1 记录用户状态、消息 ID(支持编辑消息同步)。
  • 可视化后台:管理员发送 /start 可唤出图形化配置菜单。
  • 风控管理:支持关键词自动屏蔽、自动回复、验证码/按钮验证拦截垃圾广告。

📥 项目源码

为了方便大家部署和后续更新,我将完整的 worker.js 代码托管在 GitHub 上。

GitHub 仓库地址
👉 点击这里访问项目源码

如果无法访问 GitHub,也可以点击这里下载 worker.js 文件


🛠️ 准备工作

  1. Cloudflare 账号:免费版即可。
  2. Telegram 账号:用于创建机器人和群组。
  3. 一个开启了“话题”功能的群组

🚀 部署步骤

第一步:获取 Telegram 机器人与 ID

  1. 申请机器人
    • 在 Telegram 搜索 @BotFather,发送 /newbot
    • 按照提示设置名称,获得 HTTP API Token(格式如 123456:ABC-DEF...),保存好。
  2. 准备管理群组
    • 创建一个新群组。
    • 关键设置:进入群组设置 -> 开启 Topics (话题) 功能。
    • 将刚才创建的机器人拉入群组,并给管理员权限
  3. 获取必要 ID
    • 群组 ID:在群里随便发条消息,转发给 @get_id_bot,获取 Chat ID(必须以 -100 开头)。
    • 个人 ID:也就是你的 User ID,同样通过 @get_id_bot 获取。

第二步:创建 Cloudflare D1 数据库

脚本需要数据库来存储用户配置,Cloudflare D1 是免费的。

  1. 登录 Cloudflare Dashboard,点击左侧 Workers & Pages -> D1 SQL Database
  2. 点击 Create
  3. Database name 输入 tg_bot_db (建议完全一致,方便后续对照)。
  4. 点击 Create
  5. 注意:你不需要手动建表,脚本会在第一次运行时自动检测并创建数据表。

第三步:部署 Workers 代码

  1. 回到 Workers & Pages -> Overview -> Create Application -> Create Worker
  2. 名字随便取(比如 my-cs-bot),点击 Deploy
  3. 部署完成后,点击 Edit code
  4. 复制 GitHub 仓库中的 worker.js 代码。
  5. 粘贴 到 Cloudflare 的编辑器中(覆盖原有代码)。
  6. 点击右上角 Save and deploy

第四步:绑定环境变量(最关键!)

回到 Worker 的设置页面(Settings -> Variables and Secrets):

1. 绑定数据库 (Bindings)

  • 向下滚动找到 Bindings
  • 点击 Add -> D1 Database
  • Variable name: TG_BOT_DB (必须完全一致,脚本写死了这个名字)。
  • D1 Database: 选择第二步创建的 tg_bot_db

2. 设置环境变量 (Environment Variables)
点击 Add 添加以下 3 个变量:

变量名 (Variable name) 值 (Value) 说明
BOT_TOKEN 123456:ABC... 第一步获取的机器人 Token
ADMIN_GROUP_ID -100xxxxxxx 第一步获取的群组 ID
ADMIN_IDS 12345678 第一步获取的个人 ID (多个管理员用逗号分隔)

设置完成后,务必点击 Deploy 保存设置。

第五步:设置 Webhook (激活)

Cloudflare Worker 是被动触发的,需要告诉 Telegram 把消息推送到这里。

  1. 在 Worker 页面找到你的 Worker URL (例如 https://xxx.workers.dev)。
  2. 在浏览器地址栏拼接以下链接并访问:
    1
    [https://api.telegram.org/bot](https://api.telegram.org/bot)<你的Token>/setWebhook?url=<你的Worker网址>
  3. 如果网页返回 {"ok":true, ... "Webhook was set"},恭喜你,部署成功!

📝 高级提示 (避坑指南)

  1. 关于域名(重要)
    Telegram 的服务器有时候连接 Cloudflare 默认的 *.workers.dev 域名会不稳定。如果你的 Webhook 设置成功但机器人没反应,建议在 Worker 的 Settings -> Domains & Routes 里绑定一个自定义域名(Custom Domain)。

  2. 关于隐私模式
    建议对 @BotFather 发送 /mybots -> 选择你的机器人 -> Bot Settings -> Group Privacy -> Turn off。关闭隐私模式可以让机器人更稳定地读取群组内的所有回复。

  3. 数据库报错
    如果在日志里看到 TG_BOT_DB is missing,请务必检查第四步的 Variable name 是否填错,必须是大写 TG_BOT_DB


希望这个机器人能帮到你!如果觉得好用,记得去 GitHub 给我点个 Star ⭐️ 哦!