【保姆级】零成本搭建 Telegram 私聊转发客服机器人 (Cloudflare Workers + D1)
【保姆级】零成本搭建 Telegram 私聊转发客服机器人 (Cloudflare Workers + D1)
Kin如果你想拥有一个 Telegram 客服机器人,实现“用户私聊机器人 -> 消息自动转发到群组话题 -> 管理员在群组回复 -> 自动转发回用户”的无缝沟通体验,但又不想购买服务器,那么这篇教程就是为你准备的。
本文将教你利用 Cloudflare Workers(无服务器计算)和 D1 数据库,零成本部署一个功能强大的双向转发机器人。
💡 核心功能
这个脚本不仅仅是简单的转发,它包含了一套完整的管理系统:
- Topic 分流:利用 Telegram 群组的“话题”功能,每个用户自动创建一个独立话题,聊天记录清晰不混乱。
- 双向通信:完美支持文本、图片、视频、文件、贴纸的双向转发。
- 自带数据库:使用 D1 记录用户状态、消息 ID(支持编辑消息同步)。
- 可视化后台:管理员发送
/start可唤出图形化配置菜单。 - 风控管理:支持关键词自动屏蔽、自动回复、验证码/按钮验证拦截垃圾广告。
📥 项目源码
为了方便大家部署和后续更新,我将完整的 worker.js 代码托管在 GitHub 上。
GitHub 仓库地址:
👉 点击这里访问项目源码如果无法访问 GitHub,也可以点击这里下载 worker.js 文件
🛠️ 准备工作
- Cloudflare 账号:免费版即可。
- Telegram 账号:用于创建机器人和群组。
- 一个开启了“话题”功能的群组。
🚀 部署步骤
第一步:获取 Telegram 机器人与 ID
- 申请机器人:
- 在 Telegram 搜索
@BotFather,发送/newbot。 - 按照提示设置名称,获得 HTTP API Token(格式如
123456:ABC-DEF...),保存好。
- 在 Telegram 搜索
- 准备管理群组:
- 创建一个新群组。
- 关键设置:进入群组设置 -> 开启 Topics (话题) 功能。
- 将刚才创建的机器人拉入群组,并给管理员权限。
- 获取必要 ID:
- 群组 ID:在群里随便发条消息,转发给
@get_id_bot,获取Chat ID(必须以-100开头)。 - 个人 ID:也就是你的
User ID,同样通过@get_id_bot获取。
- 群组 ID:在群里随便发条消息,转发给
第二步:创建 Cloudflare D1 数据库
脚本需要数据库来存储用户配置,Cloudflare D1 是免费的。
- 登录 Cloudflare Dashboard,点击左侧 Workers & Pages -> D1 SQL Database。
- 点击 Create。
- Database name 输入
tg_bot_db(建议完全一致,方便后续对照)。 - 点击 Create。
- 注意:你不需要手动建表,脚本会在第一次运行时自动检测并创建数据表。
第三步:部署 Workers 代码
- 回到 Workers & Pages -> Overview -> Create Application -> Create Worker。
- 名字随便取(比如
my-cs-bot),点击 Deploy。 - 部署完成后,点击 Edit code。
- 复制 GitHub 仓库中的
worker.js代码。 - 粘贴 到 Cloudflare 的编辑器中(覆盖原有代码)。
- 点击右上角 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 把消息推送到这里。
- 在 Worker 页面找到你的 Worker URL (例如
https://xxx.workers.dev)。 - 在浏览器地址栏拼接以下链接并访问:
1
[https://api.telegram.org/bot](https://api.telegram.org/bot)<你的Token>/setWebhook?url=<你的Worker网址>
- 如果网页返回
{"ok":true, ... "Webhook was set"},恭喜你,部署成功!
📝 高级提示 (避坑指南)
关于域名(重要):
Telegram 的服务器有时候连接 Cloudflare 默认的*.workers.dev域名会不稳定。如果你的 Webhook 设置成功但机器人没反应,建议在 Worker 的 Settings -> Domains & Routes 里绑定一个自定义域名(Custom Domain)。关于隐私模式:
建议对@BotFather发送/mybots-> 选择你的机器人 ->Bot Settings->Group Privacy->Turn off。关闭隐私模式可以让机器人更稳定地读取群组内的所有回复。数据库报错:
如果在日志里看到TG_BOT_DB is missing,请务必检查第四步的Variable name是否填错,必须是大写TG_BOT_DB。
希望这个机器人能帮到你!如果觉得好用,记得去 GitHub 给我点个 Star ⭐️ 哦!
