Telegram机器人免费部署新方案:Cloudflare Workers搭建完整教程

想拥有一个24小时在线的Telegram机器人却不想租服务器?本文教你利用Cloudflare Workers免费搭建,从创建机器人、编写代码到部署上线,带你顺利完成所有步骤。

阅读提示建议先浏览小标题,再根据需要深入阅读具体段落。

Telegram机器人能帮你自动回复消息、管理群组、订阅信息,甚至是执行定时任务。然而,传统的机器人部署方式通常需要一台持续运行的服务器,成本不低。今天,我们为你带来一种全新的免费方案——利用Cloudflare Workers搭建Telegram机器人,让它在云端免费运行,无需担心服务器费用和维护成本。

为什么选择Cloudflare Workers?

Cloudflare Workers是一个边缘计算平台,允许你在全球数百个节点运行JavaScript代码。它提供了免费套餐,每天有10万次请求额度,足以满足大多数个人机器人的需求。相比VPS或Docker容器,Cloudflare Workers有三大优势:

  • 零成本:免费套餐足够个人使用,无需绑定信用卡。
  • 无需维护:不需要更新系统、重启服务,一切由Cloudflare托管。
  • 极快响应:由于在全球部署,用户交互延迟极低。

准备工作

在开始之前,你需要准备以下账号和工具:

  1. 一个Telegram账号(用于创建机器人)。
  2. 一个Cloudflare账号(前往 dash.cloudflare.com 注册)。
  3. 一个代码编辑器(推荐使用VS Code)。
  4. 基本的JavaScript知识(即使不懂,按步骤也能完成)。

步骤一:创建Telegram机器人获取Token

打开Telegram,在搜索栏输入 @BotFather,这是Telegram官方的机器人管理账户。启动对话后,执行以下操作:

  1. 发送 /newbot 命令,创建新机器人。
  2. 按照提示为机器人设置显示名称(例如 Cloudflare Bot)。
  3. 设置机器人用户名(必须以 bot 结尾,如 cf_sample_bot)。
  4. 创建成功后,BotFather会返回一个HTTP API Token,形如 123456789:ABCdef... ,请务必保存好,稍后要用。

步骤二:编写Worker代码

打开Cloudflare Dashboard,进入Workers & Pages 页面,点击“创建Worker”,进入编辑器。我们将编写一个最简单的回显机器人:它接收Telegram发来的消息,原样返回。

完整代码如下:

// 你的Bot Token
const BOT_TOKEN = '123456789:ABCdef...';

async function handleRequest(request) {
  const url = new URL(request.url);
  // 只处理POST请求(Telegram发送更新时用POST)
  if (request.method === 'POST') {
    const update = await request.json();
    const message = update.message;
    if (message && message.text) {
      const chatId = message.chat.id;
      const text = message.text;
      // 调用Telegram API发送回显消息
      await sendMessage(chatId, text);
    }
    return new Response('OK');
  }
  // 如果访问根路径,返回提示
  return new Response('Telegram Bot is running!');
}

async function sendMessage(chatId, text) {
  const apiUrl = `https://api.telegram.org/bot$/sendMessage`;
  const response = await fetch(apiUrl, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ chat_id: chatId, text }),
  });
  return response;
}

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request));
});

请将 BOT_TOKEN 替换为你从BotFather获得的真实Token。这段代码逻辑很简单:收到更新后,提取聊天ID和文本,然后调用 sendMessage 把文本原样发送回去。

步骤三:部署到Cloudflare Workers

有两种方式部署 Worker:

方法A:在浏览器编辑器直接部署

  1. 在Cloudflare Workers编辑页面粘贴上述代码。
  2. 点击“保存并部署”按钮,等待片刻。
  3. 你会得到一个你的Worker访问地址(例如 https://你的子域名.workers.dev)。
  4. 复制这个URL,它就是你的Webhook端点。

方法B:使用Wrangler CLI部署(适合进阶)

  1. 在你的电脑上安装Node.js和npm。
  2. 全局安装Wrangler:npm install -g wrangler
  3. 进入项目目录,运行 wrangler init 初始化。
  4. 将代码写入 index.js,在 wrangler.toml 中配置 name 和 workers_dev 为 true。
  5. 运行 wrangler deploy,按照提示登录Cloudflare账号,即可部署。

推荐新手使用方法A,更直观。

步骤四:设置Webhook

Telegram有两种获取更新的方式:长轮询和Webhook。这里我们使用Webhook,它能在消息到达时立刻将更新推送到你的Worker。

在你的浏览器或命令行中打开以下URL,将 BOT_TOKENWORKER_URL 替换为你的实际值:

https://api.telegram.org/bot<BOT_TOKEN>/setWebhook?url=<WORKER_URL>

例如:

https://api.telegram.org/bot123456789:ABCdef.../setWebhook?url=https://cf-sample.workers.dev

如果返回 JSON 包含 "ok":true,说明设置成功。至此,你的免费机器人已经上线。

测试机器人

用你的Telegram账号私信机器人,发送任意文字,比如“你好”,如果机器人立刻回复同样的内容,恭喜你!你的Cloudflare Workers机器人已经正常运行了。

你也可以尝试使用Telegram Web客户端或手机App进行测试,效果一致。

进阶实用建议

上面的代码只是最基础的示例。你完全可以基于它扩展更多功能,这里提供几个思路:

  • 关键词自动回复:根据收到的文本判断关键词,返回预设的内容。
  • 定时提醒:使用Cron触发器(需要在Workers里配置Schedule),定时发送提醒到指定群或用户。
  • 订阅订阅源:利用Cloudflare Workers的Fetch功能,抓取RSS或网页内容,新内容自动推送到Telegram。
  • 生成图片或二维码:结合第三方API,实现生成二维码、表情包等。

需要注意的是,Cloudflare Workers免费套餐每日有请求次数限制,如果机器人使用频繁,可升级到付费计划,但大多数场景免费足够。

常见问题

1. 为什么我的机器人不回复?

首先检查Webhook是否设置成功。可以通过访问 https://api.telegram.org/bot<BOT_TOKEN>/getWebhookInfo 查看Webhook状态。如果显示 last_error_message,说明你的Worker代码有错误,需要调试。也可以按F12打开控制台看请求是否到达Worker。

2. Cloudflare Workers的免费额度真的够吗?

免费套餐每天有10万次请求,如果你的机器人每秒收到一个消息,一天大约8万次,勉强够用;对于个人用途,通常只有几百到几千次请求,完全不用担心。

3. 能否部署使用Python或其他语言的机器人?

Cloudflare Workers原生支持JavaScript和Wasm。如果你偏爱Python,可以考虑使用Pyodide或PyScript方案,但比较复杂。推荐直接用JavaScript,毕竟这个教程已经非常简易了。

4. 如何将已有机器人迁移到Cloudflare Workers?

如果你的机器人使用长轮询,需要先调用 deleteWebhook,再在Worker中实现相同逻辑,并重新设置Webhook。注意你的代码可能需要重构,因为Workers是无状态的,不能保存本地文件或使用数据库。

总结

利用Cloudflare Workers搭建Telegram机器人是一个极其实用的技巧,它省去了服务器租赁和运维的烦恼,让你专注于功能开发。本文从创建机器人、编写代码、部署到Webhook配置,一步步带你完成了整个流程。现在,你可以自由扩展功能,打造一个属于自己的全能机器人了。记住,掌握这一方案,你的Telegram自动化之旅才刚刚开始。

FAQ

安装与配置指南

常见问题