首頁 >web前端 >js教程 >在 Cloudflare Workers 上部署 Telegram 機器人:逐步指南

在 Cloudflare Workers 上部署 Telegram 機器人:逐步指南

PHPz
PHPz原創
2024-08-19 18:32:031065瀏覽

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