免费云平台,比如 Render、Heroku 或 Railway 等免费实例(Free instances)在一段时间没有使用后会自动关闭(spin down)导致无法接收来自telegram 的webhook。
将项目部署到 Cloudflare Workers,就不会有“休眠”问题了
在自动化 Telegram 群组管理中,我们常见的需求是:
- 当群成员 A 发送含有 .xlsx 或 .txt 文件的消息;
- 将该消息转发给非群成员用户 B 和 C;
- 同时让 Bot 自动回复 “收到”。
很多人选择用 VPS 或 Render 服务器部署 Bot,但免费实例会“休眠”,造成消息延迟甚至丢失。今天,我们将用 Cloudflare Workers 实现这个功能 —— 免费、快速、永不休眠!
Cloudflare Workers 是 边缘无服务器架构(serverless at the edge),它的运行机制不同于传统的 VPS 或容器服务:
- 随请求而激活(cold start 极短)
- 没有固定的“实例”要维持运行
- 没有“spin down”或“sleep”的概念
- 永远在线(只要请求来了就响应)
这也意味着它非常适合:
- 转发 API 请求
- 监听 webhook
- 作为中间代理
- 运行轻量逻辑(如 chat 转发、文件过滤)
示例应用场景(结合你之前提到的需求):
之前1篇文章通过 Render 实现 “监听群组消息,转发含 txt/xlsx 的内容并自动回复” 的逻辑,这其实也可以 放到 Cloudflare Workers 来做(甚至更优):
- 用 Telegram Bot API + webhook 模式部署到 Workers
- 检查收到的消息是否有附件
- 判断是否是 .txt 或 .xlsx 文件
- 使用 fetch 调用 Telegram 的 sendMessage / forwardMessage API 转发给 B 和 C
- 自动回复 “收到”
💸 费用也很友好:
Cloudflare Workers 免费版每天有:
- 10 万次请求
- 1 GB 传输
- 不休眠,不关机,不延迟
足够应对大部分中小型自动化场景。
附加建议:
如果你要处理文件下载,可能需要结合:
fetch 获取 Telegram 文件 API或者借助 Cloudflare R2 作为临时存储(如有需要持久化)
把现有功能迁移到 Cloudflare Workers
写好监听 Telegram 群消息 + 过滤 + 转发逻辑
🛠️ 前置准备
Telegram Bot Token
在 @BotFather 创建你的 Bot,并获取 Token。
目标用户或群组 ID(A、B、C)
可通过 @userinfobot 获取 ID,或用 Telegram API 工具查询。
Cloudflare 账号
注册:https://dash.cloudflare.com
编写 Cloudflare Worker 脚本
登录 Cloudflare,进入“Workers & Pages” → 创建 Worker,粘贴以下代码:
const BOT_TOKEN = '7059485476:BBGdXFUQ2HymKW2ectEuTYojqu06aoSZ6Eg'; const A_ID = 5312575488; // A 的 Telegram 用户 ID(数字) const RECIPIENT_IDS = [1634258587, 1935050795]; // B 和 C 的用户 ID const ALLOWED_EXTENSIONS = ['.xls', '.xlsx', '.txt']; async function sendDocument(chat_id, document_file_id, caption = '') { const url = `https://api.telegram.org/bot${BOT_TOKEN}/sendDocument`; const body = { chat_id, document: document_file_id, caption, }; const resp = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body), }); const data = await resp.json(); if (!data.ok) { console.error('sendDocument failed:', data); } return data; } async function sendMessage(chat_id, text) { const url = `https://api.telegram.org/bot${BOT_TOKEN}/sendMessage`; const body = { chat_id, text }; const resp = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body), }); const data = await resp.json(); if (!data.ok) { console.error('sendMessage failed:', data); } return data; } function isValidFile(filename) { filename = filename.toLowerCase(); return ALLOWED_EXTENSIONS.some(ext => filename.endsWith(ext)); } export default { async fetch(request) { if (request.method !== 'POST') { return new Response('Only POST allowed', { status: 405 }); } const update = await request.json(); try { const message = update.message; if (!message) return new Response('No message', { status: 200 }); // 判断是否来自 A if (message.from?.id !== A_ID) return new Response('Not from A', { status: 200 }); // 判断是否有文档 const doc = message.document; if (!doc) return new Response('No document', { status: 200 }); if (!isValidFile(doc.file_name)) return new Response('File not allowed', { status: 200 }); // 转发给 B 和 C for (const userId of RECIPIENT_IDS) { await sendDocument(userId, doc.file_id, message.caption || ''); } // 在群里回复 “A 收到” if (message.chat && message.chat.id) { await sendMessage(message.chat.id, '收到'); } return new Response('OK', { status: 200 }); } catch (e) { console.error(e); return new Response('Error', { status: 500 }); } } };
替换内容:
‘你的Bot Token’ → 替换成你的真实 Token
‘12345678’, ‘87654321’ → 替换为 B 和 C 的 Telegram 用户 ID
只需要你提供:
- Bot 的 token
- 群组 ID / 用户 ID(A、B、C)
- 使用 Bot webhook(推荐)
配置 Telegram Webhook
我们将使用 https://你的子域.workers.dev/ 作为 Bot 的 Webhook 接收地址。
设置方法在浏览器中打开下面链接:
https://api.telegram.org/bot/setWebhook?url=https://your-worker-url.workers.dev/”
部署并测试
点击 Deploy 按钮,Worker 会生成一个域名(如 yourbot-worker.xxxx.workers.dev)。
回到第一步用的 curl 命令设置 Webhook。
回到你的 Telegram 群组里测试上传 .txt 或 .xlsx 文件,看是否触发转发和自动回复。
效果预期
上传 .txt 或 .xlsx 文件后,Bot 会:
- 将消息完整转发给 B 和 C(含原文件)
- 在群组内自动回复:“收到”
- 没有任何服务器开销、不会休眠、延迟极低!
总结
Cloudflare Workers 是构建轻量型 Telegram 自动化工具的理想选择:
替代传统 VPS,省心省钱
无需考虑服务器部署、端口、休眠等问题
与 Telegram Bot API 天然契合
希望本教程能帮你快速上线你的自动转发机器人。如果你需要更多进阶功能(如识别图片、OCR、自动下载等),我也可以继续帮你拓展。
评论0