首页 >web前端 >js教程 >在 Cloudflare Workers 上部署 Telegram 机器人:分步指南

在 Cloudflare Workers 上部署 Telegram 机器人:分步指南

PHPz
PHPz原创
2024-08-19 18:32:031114浏览

Deploying Your Telegram Bots on Cloudflare Workers: A Step-by-Step Guide

您准备好构建 Telegram 机器人而无需管理服务器了吗?借助 Cloudflare Workers,您可以在几分钟内部署机器人,利用强大的可扩展平台来处理所有繁重的工作。在本指南中,我们将引导您完成整个过程 - 从设置开发环境到部署功能齐全的 Telegram 机器人 - 全部使用 TypeScript 中的简单、易于遵循的模板。让我们深入了解并让您的机器人启动并运行。

?为什么为您的 Telegram 机器人选择 Cloudflare Workers?

Cloudflare Workers 是一个无服务器平台,允许开发人员在靠近用户的边缘以最小的延迟运行 JavaScript、TypeScript 或 Python 代码。通过利用这个平台,您可以部署不仅速度快,而且可高度扩展的 Telegram 机器人。无需管理服务器、处理扩展或处理复杂的基础设施 - Cloudflare 会为您处理一切。

?构建机器人的分步指南

现在让我们深入了解该过程。

?创建一个新的工人项目

  1. 设置您的开发环境

在我们开始构建之前,您需要安装 wrangler,Cloudflare 用于管理 Workers 的命令行工具:

npm install wrangler

提示:如果您没有安装 npm,您可以通过从 nodejs.org 下载并安装 Node.js 轻松获取它。

  1. 使用 Telegram 机器人模板创建新工作人员

设置好 Wrangler 后,导航到您希望工作文件所在的目录。运行以下命令来创建您的工作人员:

npm create cloudflare@latest MY_WORKER_NAME

将 MY_WORKER_NAME 替换为您喜欢的工作人员名称。如果这是您第一次使用 Wrangler,它会提示您连接到您的 Cloudflare 帐户并通过浏览器窗口进行身份验证 - 只需按照说明操作即可。

当提示输入模板时,选择来自 GitHub 存储库的模板 并输入:

https://github.com/m-sarabi/cloudflare-telegram-bot

然后在询问时选择 Typescript

请务必访问此存储库并给它一个 Star ⭐️。

  1. 初始化 Git 并跳过部署

在设置过程中,系统会询问您是否要使用 Git 进行版本控制以及是否要立即部署您的工作线程。我建议两者都选择,等到我们配置完所有内容为止。

您应该看到消息:SUCCESS 应用程序创建成功!

?使用 @BotFather 设置您的 Telegram 机器人

  1. 使用 /newbot 命令创建您的机器人。
  2. 按照提示操作并记下提供的 API 令牌。

接下来,我们将在项目目录中的 wrangler.toml 文件中设置环境变量。因此,将这些行添加到文件中:

[vars]
SECRET = "<SECRET>"
TOKEN = "<API_TOKEN>"
  • 秘密: 替换 使用随机令牌确保请求来自您设置的 Webhook。可以是 1–256 个字符,包括 A-Z、a-z、0-9、_ 和 -。
  • API_TOKEN: 替换 使用您从 @BotFather 获得的 API 令牌。

设置这些变量后,在项目目录中运行以下命令:

npm run cf-typegen

此命令重新生成worker-configuration.d.ts 文件,反映您新设置的变量。

?编写您的机器人逻辑

现在,让我们进入有趣的部分 - 对机器人进行编码!在此示例中,我们将创建此:

场景:当用户发送 /start 命令时,机器人会显示一条带有按钮的消息。按下按钮后,机器人会将其删除并发送后续消息。

处理 /start 命令

所有更新处理函数都位于 src/Telegram/handlers 目录中。

我们将首先使用消息和内联按钮响应 /start 命令。像这样修改 src/Telegram/handlers/handleMessage.ts:

import { tg } from '../lib/methods';

export async function handleMessage(message: tgTypes.Message) {
    const messageText = message.text;
    const chatId = message.chat.id;
    if (messageText === '/start') {
        await tg.sendMessage({
            text: 'Welcome to my bot! Press the button to accept my rules!',
            chat_id: chatId,
            reply_markup: {
                inline_keyboard: [
                    [{
                        text: 'I Accept',
                        callback_data: 'accept_rules'
                    }]
                ]
            }
        });
    }
}

此代码片段使用 tg.sendMessage 方法通过内联键盘按钮发送消息。

处理内联按钮按下

当用户按下内联按钮时,我们希望机器人确认此操作。修改 src/Telegram/handlers/handleCallbackQuery.ts:

import { tg } from '../lib/methods';

export async function handleCallbackQuery(callbackQuery: tgTypes.CallbackQuery) {
    const data = callbackQuery.data;
    const messageId = callbackQuery.message?.message_id;
    const chatId = callbackQuery.message?.chat.id;
    if (messageId && chatId) {
        if (data === 'accept_rules') {
            await tg.editMessageReplyMarkup({
                chat_id: chatId,
                message_id: messageId,
                reply_markup: undefined
            });
            await tg.sendMessage({
                chat_id: chatId,
                text: 'Thanks for accepting my rules.'
            });
        }
    }
}

此代码侦听accept_rules数据查询,并在匹配时删除内联按钮并使用tg.editMessageReplyMarkup方法发送后续消息。

?注册您的 Webhook

机器人逻辑就位后,就可以部署您的工作线程并通过 Webhook 将其连接到 Telegram。

  1. 运行 wrangler deploy 来部署你的工作线程。
  2. 导航到您的 Cloudflare 仪表板并选择 工作人员和页面
  3. 在您的项目名称旁边,单击访问
  4. 在 URL 栏中,附加 /registerWebhook(例如,https://my-project.my-username.workers.dev/registerWebhook)并按 Enter 键。如果您看到“Webhook 已注册”,那么您就完成了!

部署并注册后,您可以在 Telegram 上与您的机器人进行交互。首先单击 开始(或发送 /start),您应该会看到带有内联按钮的欢迎消息。

?结论

借助 Cloudflare Workers,构建和部署 Telegram 机器人从未如此简单。通过遵循本指南,您已经利用无服务器技术的力量来创建一个不仅可扩展、快速而且易于维护的机器人。

无论您是构建供个人使用的简单机器人还是为企业部署更复杂的机器人,此模板都提供了坚实的基础。快乐编码!

?资源和进一步阅读

  • Cloudflare Workers 文档
  • 电报机器人 API
  • 模板的 GitHub 存储库

以上是在 Cloudflare Workers 上部署 Telegram 机器人:分步指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn