在国内环境下搭建Telegram(TG)机器人并不是一件简单的事情,但由于Cloudflare Workers提供的强大功能和灵活性,我们可以绕过一些网络限制,实现TG机器人的部署。以下是一个详细的步骤指南,帮助你完成这一过程。
准备工作
- 国内服务器:虽然我们将主要通过Cloudflare Workers来处理请求,但一个国内服务器可以用于其他相关服务或作为备份。
- Cloudflare账号:注册并登录Cloudflare账号,确保你有权限创建和使用Workers。
- Telegram机器人账号:在Telegram中创建一个新的机器人账号,并获取其API Token。
步骤一:创建Cloudflare Worker
- 登录到你的Cloudflare账号,并导航到“Workers”部分。
- 点击“创建服务”按钮,为你的TG机器人服务命名(可以自定义)。
- 创建完成后,点击你新创建的服务进入编辑界面。
步骤二:编写Worker脚本
在Worker的编辑界面,你会看到一个代码编辑器。首先,将默认代码全部删除,然后复制并粘贴以下代码:
javascript复制代码
const whitelist = [“/bot你的BotToken冒号前部分:”]; // 修改为你的Bot Token | |
const tg_host = “api.telegram.org”; | |
addEventListener(‘fetch’, event => { | |
event.respondWith(handleRequest(event.request)) | |
}) | |
function validate(path) { | |
for (var i = 0; i < whitelist.length; i++) { | |
if (path.startsWith(whitelist[i])) | |
return true; | |
} | |
return false; | |
} | |
async function handleRequest(request) { | |
var u = new URL(request.url); | |
u.host = tg_host; | |
if (!validate(u.pathname)) | |
return new Response(‘Unauthorized’, { status: 403 }); | |
var req = new Request(u, { | |
method: request.method, | |
headers: request.headers, | |
body: request.body | |
}); | |
const result = await fetch(req); | |
return result; | |
} |
注意:将”/bot你的BotToken冒号前部分:”中的你的BotToken冒号前部分替换为你的Telegram机器人API Token冒号前的部分。
步骤三:测试Worker
保存你的Worker代码并部署。
在Worker的“测试”选项卡中,你可以测试你的API请求。假设你的Bot Token是512345675:AASDJFJVKLDSNHRLSJJSQ,并且你的Cloudflare Worker的二级域名是test.cloudflare.workers.dev,你可以尝试以下URL进行测试:
复制代码
https://test.cloudflare.workers.dev/bot512345675:sendMessage?chat_id=你的TG账号ID&text=测试内容 |
注意:这里需要替换你的TG账号ID为实际的Telegram账号ID,并且由于API的限制,sendMessage并不直接作为路径,而是需要你的机器人逻辑来解析并调用Telegram的sendMessage方法。通常,你需要通过HTTP请求触发你的机器人逻辑,然后在其内部调用Telegram API。
检查返回的响应和Telegram消息,确保一切正常工作。
步骤四:配置和使用
- 确保你的Telegram账号已经与机器人互动(发送/start命令),以创建会话。
- 你现在可以通过任何支持HTTP请求的工具(如curl、Postman或编程语言的HTTP库)向你的Cloudflare Worker发送请求,以触发Telegram机器人的各种功能。
结论
通过上述步骤,你可以在国内环境下利用Cloudflare Workers成功搭建并运行Telegram机器人。这种方法不仅绕过了网络限制,还充分利用了Cloudflare Workers的边缘计算和全球分发能力,提高了机器人的响应速度和可用性。