简体中文 | English
这是一个基于 Cloudflare Worker / Vercel 的 Telegram 双向私聊机器人,无需服务器、无需数据库、无需自己的域名即可轻松部署。
用户可以通过您的机器人向您发送消息,您可以直接回复这些消息,实现双向通信。
- 🔄 双向通信 - 轻松接收和回复来自用户的消息
- 💾 无需数据库 - 完全无状态设计,零存储成本
- 🌐 无需自己的域名 - 使用 Cloudflare Worker 提供的免费域名
- 🚀 轻量级部署 - 几分钟内即可完成设置
- 💰 零成本运行 - 在 Cloudflare 免费计划范围内使用
- 🔒 安全可靠 - 使用 Telegram 官方 API 和安全令牌
- 🔌 多机器人支持 - 一个部署可注册多个私聊机器人
- 🛠️ 多种部署方式 - 支持 GitHub 一键部署、Vercel 一键部署、Wrangler CLI 和 Dashboard 部署
- Cloudflare 账号
- Telegram 账号
- 一个科学工具(仅设置阶段需要,用于访问 Worker 默认域名,自绑域名无视)
Note
您需要知道自己的 Telegram 用户 ID (UID),这是一串数字,用于将消息转发给您。
您可以通过以下方式获取:
- 向 @userinfobot 发送任意消息,它会告诉您自己的 UID
请记下您的数字 ID(例如:123456789
)。
- 在 Telegram 中搜索并打开 @BotFather
- 发送
/newbot
命令 - 按照提示设置您的机器人名称和用户名(用户名必须以
bot
结尾) - 成功后,BotFather 会发给您一个 Bot API Token(格式类似:
000000000:ABCDEFGhijklmnopqrstuvwxyz
) - 请安全保存这个 Bot API Token
这是最简单的部署方式,无需本地开发环境,直接通过 GitHub 仓库部署。
- Fork 或克隆本仓库到您的 GitHub 账户
- 登录 Cloudflare Dashboard
- 导航到 Workers & Pages 部分
- 点击 Create Application
- 选择 Connect to Git
- 授权 Cloudflare 访问您的 GitHub,并选择您 fork 的仓库
- 配置部署设置:
- Project name:设置您的项目名称(例如
open-wegram-bot
) - Production branch:选择主分支(通常是
master
) - 其他设置保持默认
- Project name:设置您的项目名称(例如
- 配置环境变量:
- 点击 Environment Variables
- 添加
PREFIX
(例如:public
) - 添加
SECRET_TOKEN
(必须包含大小写字母和数字,长度至少16位),并标记为加密
- 点击 Save and Deploy 按钮完成部署
这种方式的优点是:当您更新 GitHub 仓库时,Cloudflare 会自动重新部署您的 Worker。
Vercel 提供了另一种简单的部署方式,也支持从 GitHub 仓库自动部署。
- 点击下方的"Deploy with Vercel"按钮:
- 按照 Vercel 的提示完成部署流程
- 配置环境变量:
PREFIX
:设置为您想要的 URL 前缀(例如public
)SECRET_TOKEN
:设置一个安全的令牌(必须包含大小写字母和数字,长度至少16位)
- 完成部署后,Vercel 会提供一个域名,如
your-project.vercel.app
Vercel 部署的优点是简单快速,支持自动更新,并且默认提供 HTTPS。
如果您熟悉命令行工具,可以使用 Wrangler CLI 进行部署。
- 确保安装了 Node.js 和 npm
- 克隆本仓库:
git clone https://github.com/wozulong/open-wegram-bot.git cd open-wegram-bot
- 安装依赖:
npm install
- 部署 Worker:
npx wrangler deploy
- 设置您的安全令牌:
npx wrangler secret put SECRET_TOKEN
如果您不想使用 GitHub 或命令行,也可以直接在 Cloudflare Dashboard 中创建。
- 登录 Cloudflare Dashboard
- 导航到 Workers & Pages 页面
- 点击 Create Worker
- 删除默认代码,粘贴本项目的
src/worker.js
和src/core.js
代码 - 点击 Save and Deploy
- 在 Worker 设置中添加环境变量:
PREFIX
(例如:public
)SECRET_TOKEN
(必须包含大小写字母和数字,长度至少16位)
Deno 提供了另一种简单的部署方式,也支持从 GitHub 仓库自动部署。
- Fork 本仓库到您的 GitHub 账户
- 登录 Deno Deploy 并点击 New Project
- 选择已授权的 GitHub 账户并选择您的 Fork 仓库
- 在 Project Configuration -> Entrypoint 下选择
deno/server.js
- 点击 Deploy Project 按钮,等待部署完成
- 点击页面底部 Add environment variables 按钮,添加环境变量:
PREFIX
:URL前缀,例如public
SECRET_TOKEN
:加密令牌,必须包含大小写字母和数字,长度至少16位
- 点击 Save (2 new) 按钮保存环境变量后即完成部署,环境变量上方即为 Deno 提供的域名,如
project-name.deno.dev
Netlify 提供了另一种简单的部署方式,也支持从 GitHub 仓库自动部署。
- Fork 本仓库到您的 GitHub 账户
- 登录 Netlify 并点击 Add new site -> Add new site Import an existing project
- 选择已授权的 GitHub 账户并选择您的 Fork 仓库
- 填写 Site name 并添加环境变量:
- 点击 Add environment variables -> Add key/value pairs
NETLIFY_PREFIX
:URL前缀,例如public
SECRET_TOKEN
:加密令牌,必须包含大小写字母和数字,长度至少16位
- 点击 Deploy xxx 按钮,部署完成后即可在站点名称下看到 Netlify 提供的域名,如
site-name.netlify.app
EdgeOne 提供了另一种简单的部署方式,也支持从 GitHub 仓库自动部署。
- Fork 本仓库到您的 GitHub 账户
- 登录 EdgeOne Pages 并点击 创建项目 -> 导入 Git 仓库
- 选择已授权的 GitHub 账户并选择您的 Fork 仓库
- 添加环境变量:
EDGEONE_PREFIX
:URL前缀,例如public
SECRET_TOKEN
:加密令牌,必须包含大小写字母和数字,长度至少16位
- 点击 开始部署 按钮,部署完成后转到 项目设置 -> 域名管理 添加自定义域名,默认域名
project-name.edgeone.app
只支持预览,有效期仅 3 个小时!
Tip
为您的 Worker 绑定自定义域名可以避免使用科学工具访问,更加便捷!
Cloudflare 允许您将自己的域名绑定到 Worker 上,这样您就可以通过自己的域名访问 Worker,而不需要使用被和谐的默认域名。
- 在 Cloudflare 仪表板中添加您的域名
- 在 Workers & Pages 部分,选择您的 worker
- 点击 Triggers,然后点击 Add Custom Domain
- 按照说明将您的域名绑定到 Worker
绑定后,您可以使用类似 https://your-domain.com/YOUR_PREFIX/install/...
的地址来注册/卸载机器人,无需科学工具。
部署 Worker 后,您将获得一个 URL,形如:
- GitHub 集成:
https://your-project-name.username.workers.dev
- Vercel 部署:
https://your-project.vercel.app
- Wrangler/Dashboard:
https://your-worker-name.your-subdomain.workers.dev
- Deno 部署:
https://project-name.deno.dev
- Netlify 部署:
https://site-name.netlify.app
- EdgeOne 部署:
https://your.custom.domain
现在您需要注册您的 Bot:
Warning
由于 Cloudflare Workers 默认域名被和谐,此步骤需要科学。如果您已绑定自定义域名,可以直接使用您的域名进行访问,无需科学工具。
- 在浏览器中访问以下 URL 来注册您的 Bot(替换相应参数):
https://your-worker-url/YOUR_PREFIX/install/YOUR_TELEGRAM_UID/BOT_API_TOKEN
例如:
https://open-wegram-bot.username.workers.dev/public/install/123456789/000000000:ABCDEFGhijklmnopqrstuvwxyz
- 如果看到成功消息,说明您的 Bot 已经注册成功
Note
一个 Worker 实例可以注册多个不同的 Bot!只需重复上述注册步骤,使用不同的 Bot API Token 即可。
一旦设置完成,任何人给您的 Bot 发送消息,您都会在自己的 Telegram 账号中收到这些消息,并且消息下方会显示发送者的信息。
要回复某个用户的消息:
- 在 Telegram 中找到您想回复的转发消息
- 直接回复该消息(使用 Telegram 的回复功能)
- 您的回复会被自动发送给原始发送者
如果您想卸载 Bot,请访问以下 URL(替换相应参数):
https://your-worker-url/YOUR_PREFIX/uninstall/BOT_API_TOKEN
Important
请妥善保管您的 Bot API Token 和安全令牌(Secret Token),这些信息关系到您服务的安全性。
Warning
请勿随意更改已设置的 Secret Token! 更改后,所有已注册的机器人将无法正常工作,因为无法匹配原来的令牌。如需更改,所有机器人都需要重新注册。
- 在初始设置时选择一个安全且便于记忆的 Secret Token
- 避免使用简单或常见的前缀名称
- 不要将敏感信息分享给他人
Note
Cloudflare Worker 免费套餐有每日 10 万请求的限制。
对于个人使用的私聊机器人来说,这个限制通常足够宽松。即使您注册了多个机器人,除非您的机器人极其活跃,否则不太可能达到这个限制。
如果您预计使用量较大,可以考虑升级到 Cloudflare 的付费计划。
- 消息未转发: 确保 Bot 已正确注册,并检查 Worker 日志
- 无法访问注册 URL: 确认您是否相信科学,或者考虑绑定自定义域名解决访问问题
- 回复消息失败: 检查您是否正确使用 Telegram 的回复功能
- 注册失败: 确保您的
SECRET_TOKEN
符合要求(包含大小写字母和数字,长度至少16位) - GitHub 部署失败: 检查环境变量是否正确设置,仓库权限是否正确
- Worker 部署失败: 检查 Wrangler 配置并确保您已登录到 Cloudflare
如果您有任何问题、建议或想贡献代码,请提 Issue/PR 或通过以下方式联系我:
- GPL v3,希望你能完善并继续开源,而不是改头换面闭源,谢谢。
希望这个工具能让您的 Telegram 私聊体验更加便捷!🎉 如果你只想直接使用,请访问 @WegramBot