Files
telegram_private_chatbot/README.md
2025-12-01 14:50:27 +08:00

8.9 KiB
Raw Blame History

🤖 Telegram Private Chatbot (v4.0)

Deploy to Cloudflare Workers GitHub stars License Telegram

Telegram Private Chatbot 是一个基于 Cloudflare Workers 的高性能 Telegram 双向私聊机器人。它专为解决 Telegram 上的垃圾广告骚扰而生,拥有 0 延迟的本地人机验证系统、强大的管理员指令集以及无缝的消息转发体验。

无需购买服务器,利用 Cloudflare 强大的边缘计算网络,即可免费部署一套企业级的客户服务系统。


📑 目录 (Table of Contents)


核心特性

v4.0 版本移除了所有不稳定的外部 API 依赖,专注于极致的速度绝对的稳定性

特性 描述
0 延迟验证 采用本地精选常识题库。秒开秒验,彻底告别网络超时与接口报错,验证成功率 100%。
🛡️ 智能防骚扰 短 ID 机制修复了 Telegram 按钮点击失效的 Bug。验证通过后提供 30 天免打扰期,兼顾安全与用户体验。
💬 话题群组管理 利用 Telegram Forum Topics 功能,自动为每位私聊用户创建一个独立的话题,消息隔离,管理井井有条。
👮 隐形指令系统 自动拦截用户端发送的 / 开头指令,防止普通用户骚扰管理员。管理指令仅在管理员群组内生效。
🔒 权限控制 强大的指令集:支持 封禁 (/ban)解封 (/unban)结单 (/close)永久信任 (/trust) 等操作。
☁️ Serverless 完全基于 Cloudflare Workers 运行。0 成本、无需服务器、无需运维、抗高并发。
📸 多媒体支持 完美支持文本、图片、视频、文件等多种消息格式的双向转发,不丢失任何细节。

🛠️ 管理员指令

注意:以下指令仅在 管理员群组的话题内 有效。用户在私聊窗口发送指令会被静默拦截,不会对管理员造成骚扰。

指令 作用 适用场景
/close 强制关闭对话
机器人会提示用户对话已结束,并拒收新消息。
工单处理完成,礼貌结束咨询。
/open 重新开启对话
恢复对该用户的消息转发。
误操作关闭,或用户需再次联系。
/ban 封禁用户
机器人将完全无视该用户的所有消息(无提示)。
遇到恶意刷屏、广告机器人。
/unban 解封用户
恢复该用户的正常通讯权限。
给予改过自新的机会。
/trust 永久信任
该用户将永久免除人机验证(永不过期)。
熟人、VIP 客户、长期合作伙伴。
/reset 重置验证
强制清除该用户的验证状态,下次需重新验证。
测试验证流程,或怀疑账号被盗。
/info 查看信息
显示当前用户的 UID、话题 ID 和链接。
查询用户资料。

🚀 部署教程

前置准备

  1. Telegram Bot:找 @BotFather 申请一个机器人,获取 Token
    • 重要设置:在 BotFather 中关闭 Group Privacy (/mybots > Settings > Group Privacy > Turn off)。
  2. 管理员群组:创建一个 Telegram 群组,并开启话题功能 (Topics)
    • 将机器人拉入群组,并设为管理员(给予管理话题权限)。
    • 获取群组 ID通常以 -100 开头)。 获取 SUPERGROUP_ID 小技巧:在 Telegram 桌面端右键群内任意消息,复制消息链接; 链接里会有一段 -100xxxxxxxxxx 或 xxxxxxxxxx若只看到纯数字 xxxxxxxxxx在前面加上 -100就是完整的 SUPERGROUP_ID私密频道/群组同理)。 在 Telegram 桌面端右键群内任意消息,复制消息链接;链接里会有一段 -100xxxxxxxxxx 或 xxxxxxxxxx若只看到纯数字 xxxxxxxxxx在前面加上 -100就是完整的 SUPERGROUP_ID私密频道/群组同理)。

方法一GitHub 一键连接部署 (推荐 ★)

这是最简单的自动化部署方式,当您更新 GitHub 仓库时Cloudflare 会自动重新部署您的 Worker。

  1. Fork 本仓库 到您的 GitHub 账户。
  2. 登录 Cloudflare Dashboard
  3. 导航到 Workers & Pages -> Create Application
  4. 点击 Connect to Git 标签页。
  5. 授权 Cloudflare 访问您的 GitHub并选择您刚才 Fork 的 telegram_private_chatbot 仓库。
  6. 配置部署设置
    • 项目名称:telegram-private-chatbot (或任意名称)。
    • 生产分支:通常是 mainmaster
    • 其余保持默认,点击 Save and Deploy
  7. ⚠️ 关键步骤:绑定数据库与变量
    • 部署完成后,进入该 Worker 的 Settings -> Variables 页面。
    • 绑定 KV 数据库 (必须)
      • 在 Cloudflare 左侧菜单 KV 中创建一个新的 Namespace例如叫 TOPIC_MAP)。
      • 回到 Worker 的 Variables 页面,向下滚动到 KV Namespace Bindings
      • 点击 Add binding,变量名填写 TOPIC_MAP (必须全大写)Namespace 选择刚才创建的那个。
    • 添加环境变量
      • BOT_TOKEN: 你的机器人 Token。
      • SUPERGROUP_ID: 你的群组 ID (例如 -100123...)。
  8. 最后一步:配置完成后,点击页面顶部的 Deployments 标签,找到最新的部署记录,点击右侧的 Retry deployment (重新部署),让变量生效。

方法二:手动复制部署 (简单直接)

如果您不想关联 GitHub可以直接复制代码。

  1. 登录 Cloudflare Dashboard
  2. 进入 Workers & Pages -> Create Application -> Create Worker ,选择从hello world开始。
  3. 命名你的 Worker点击 Deploy
  4. 点击 Edit code,将本项目 worker.js 的所有代码复制粘贴进去,覆盖原代码。
  5. 点击右上角 Deploy 保存。
  6. 配置 KV 与变量
    • Settings -> Variables
    • 添加 KV 绑定Variable name 填 TOPIC_MAP,并绑定一个 KV 数据库。
    • 添加环境变量:BOT_TOKENSUPERGROUP_ID
    • 点击 Save and Deploy

最后一步:激活 Webhook (至关重要)

无论使用哪种部署方式,最后都需要手动告诉 Telegram 你的 Worker 地址。请在浏览器中严格按顺序访问以下 URL

设置新 Webhook [https://api.telegram.org/bot](https://api.telegram.org/bot)<YOUR_TOKEN>/setWebhook?url=<YOUR_WORKER_URL> <YOUR_TOKEN> 替换为机器人 Token<YOUR_WORKER_URL> 替换为 Worker 的完整域名或者你绑定的自定义的域名 (如 https://xxx.workers.dev)。

如果返回 {"ok":true, "result":true, "description":"Webhook was set"},即表示部署成功!


常见问题 (FAQ)

Q: 为什么点击验证按钮没有反应? A: 请检查 Webhook 是否正确设置。必须确保 Telegram 允许发送 callback_query 事件。请务必执行上述“最后一步”中的重置操作。

Q: 为什么机器人无法在群里创建话题? A: 请确保1. 群组 ID 正确(-100开头2. 群组已开启 Topics 功能3. 机器人是群管理员且拥有 "Manage Topics" 权限。


🔒 安全说明

Important

请妥善保管您的 Bot API Token 和安全令牌Secret Token这些信息关系到您服务的安全性。

Warning

请勿随意更改已设置的 Secret Token更改后所有已注册的机器人将无法正常工作因为无法匹配原来的令牌。如需更改所有机器人都需要重新注册。

  • 在初始设置时选择一个安全且便于记忆的 Secret Token
  • 避免使用简单或常见的前缀名称
  • 不要将敏感信息分享给他人

📈 Star History

Star History Chart


如果这个项目对你有帮助,请给个 Star 吧!