Telegram 標誌Telegram Lyra
機器人設置· Telegram技術團隊

如何在Telegram中建立機器人並新增指令?

#指令配置#機器人開發#Telegram API#BotFather#自動回覆#指令管理
如何建立Telegram機器人, Telegram機器人指令設定, BotFather使用教學, Telegram機器人無法回應指令怎麼辦, Telegram機器人指令類型有哪些, 建立Telegram機器人步驟, Telegram機器人權限設定, 自動化回應機器人

為什麼要為機器人設定指令?

對許多開發者來說,在 Telegram 中建立機器人只是第一步,但真正的關鍵在於讓用戶一眼就知道你的機器人能做些什麼。透過指令選單(Command Menu),開發者可以定義一組斜線命令(如 /start、/help),讓用戶在對話框中點選即可觸發對應功能。視覺化的指令選單不僅大幅降低新手使用者的學習門檻,也能幫助開發者規範互動流程,減少不必要的文字解析。本文將以當前最新版本的 Telegram 用戶端與 BotFather 為基礎,逐步拆解從零建立機器人、新增與管理指令的完整流程,並涵蓋平台差異、邊界條件與常見問題。

為什麼要為機器人設定指令?
為什麼要為機器人設定指令?

前置準備:你需要的東西

在開始之前,請確認你具備以下條件。若你計劃後續透過 API 設定指令,建議也先了解基礎 HTTP 請求或程式語言經驗。

  • 一個有效的 Telegram 帳號(手機或桌面版皆可)。
  • 能夠存取 BotFather(官方機器人管理員,ID 為 @BotFather)。
  • 若後續需要透過 API 設定指令,則需準備機器人 Token(由 BotFather 建立時提供)與基本程式開發環境。

第一步:透過 BotFather 建立新機器人

BotFather 是 Telegram 官方提供的機器人生成器,所有公開機器人皆必須先在此註冊才能取得 API 權限,可謂機器人開發的起點。操作非常簡潔:

  1. 在 Telegram 搜尋欄輸入 @BotFather 並進入對話,或直接開啟 t.me/botfather。
  2. 發送指令 /newbot,BotFather 會要求你提供機器人顯示名稱(例如「天氣助手」)和使用者名稱(需以 bot 結尾,例如 WeatherHelperBot)。
  3. 成功建立後,BotFather 會回傳一組 HTTP API Token,請立即妥善保存(後續無法再次查詢完整 Token,僅能透過 /token 指令重設)。

💡 提示:機器人名稱可隨時修改,但使用者名稱一旦建立即無法刪除,僅能透過 /setname 修改顯示名稱。若需要完全重新建立,請另行使用 /newbot 建立新身份。

第二步:為機器人新增指令(透過 BotFather)

建立機器人後,指令選單預設只有 /start(由 Telegram 自動添加)與 /help(若啟用了 Privacy Mode 則需自行定義)。要新增自訂指令,請繼續使用 BotFather,操作如下:

  1. 在與 BotFather 的對話中發送 /setcommands。
  2. BotFather 會要求你選擇一個機器人(如果只有一個,它會自動選取)。
  3. 輸入指令列表,格式為每行一條:command - 簡短描述。例如:
start - 開始使用
help - 取得幫助
weather - 查詢今日天氣
feedback - 提交意見

發送後,BotFather 會回應「Success! Command list updated.」,表示指令已生效。此時返回與你的機器人的對話,輸入 / 即可看到下拉選單包含以上指令。指令選單是使用者與機器人互動的主要入口,精心設計指令能顯著提升使用者體驗。

⚠️ 注意:指令名稱(command)只能包含小寫英文字母、數字及底線,且不可超過 32 個字符。描述最多 256 個字符。此外,雖然可以定義多個指令,但一般建議不超過 10 個,以免選單過長影響使用者體驗。

平台差異:手機 vs 桌面

BotFather 的操作在 Android、iOS 與桌面版上幾乎完全相同,唯一的差別在於輸入方式與便利性:

  • 手機版(Android / iOS):點擊輸入框下方的斜線圖示可快速插入指令,或者直接在輸入框中手動鍵入。複製貼上指令列表時,建議使用長按選取後貼上,較不易出錯。
  • 桌面版(Windows / macOS / Linux):可直接使用鍵盤輸入,支援複製貼上,對於需要編輯大量指令文字的情境更為便利。

整體而言,桌面版在批次操作上佔優勢,手機版則適合快速單條測試。若你希望指令選單在你的機器人對話中即時顯示,請確保用戶端版本至少為 2020 年之後的更新,舊版可能不支援動態指令選單。

進階指令管理:修改、刪除與分組

修改既有指令

重複執行 /setcommands,輸入新的列表即可完全覆蓋舊的指令。由於 BotFather 不支援局部修改,每次都是全量覆蓋,因此建議自行備份常用指令列表,以便快速恢復或比對。

刪除所有指令

發送 /setcommands 後,只輸入一個空格或發送空內容,BotFather 會回應「No commands set.」從而清空指令選單。清空後,使用者在對話中輸入 / 將不會看到任何建議指令,僅能手動輸入已知指令觸發功能。

為不同對話情境設定專屬指令

從 2021 年起,Telegram Bot API 支援透過 setMyCommands 方法針對不同對話類型(群組、頻道、私人對話)或特定語言設定不同指令集。這項功能對於大型機器人尤為重要,例如在群組中只顯示管理指令,避免個人化指令干擾。雖然 BotFather 目前僅提供全域指令設定,但開發者可透過 API 實現細粒度控制。範例情境如下:

  • 在私人對話中顯示 /start、/help。
  • 在群組中新增 /admin、/ban 等管理指令。
  • 使用 scope 參數指定 all_private_chats 或 all_group_chats。

這部分需要撰寫程式碼(如使用 Python 的 python-telegram-bot 或直接發送 HTTP POST 請求),不熟悉開發的使用者仍可維持使用 BotFather 統一設定。

# 範例:透過 API 將指令限於群組(以目前最新 API 為準)
POST https://api.telegram.org/bot<YOUR_TOKEN>/setMyCommands
Content-Type: application/json

{
  "commands": [
    {"command": "ban", "description": "封鎖使用者"},
    {"command": "unban", "description": "解除封鎖"}
  ],
  "scope": {"type": "all_group_chats"}
}

方案A vs 方案B:BotFather vs API

比較維度 方案A:BotFather 方案B:API setMyCommands
適用對象 非技術使用者、快速測試 開發者、需要細粒度控制
指令範圍 全域(所有對話) 可依對話類型/語言/使用者區分
更新方式 手動輸入 自動化腳本或程式
生效時間 即時(約1-2秒) 即時,無延遲
版本依賴 無需編程,BotFather 已內建 需支援 Bot API 4.8+(約2020年後)

驗證指令是否生效

完成設定後,可以透過以下方法確認指令已正確載入。從使用者視角驗證是最直觀的方式,但若指令未即時出現,可能是用戶端快取導致。

  • 使用者視角:開啟與該機器人的私人對話,在輸入框中輸入 /,觀察彈出的選單是否包含你設定的指令。若僅顯示空白,請稍候約10秒後重新輸入。
  • 開發者視角:發送 getMyCommands API 請求(需帶 Token),檢查回應中的 commands 陣列是否正確。

📌 經驗性觀察:部分舊版用戶端(如 2021 年以前的版本)可能不會立即更新指令選單,建議用戶更新至最新版。若使用 BotFather 後指令未出現,可嘗試重新啟動 Telegram 應用程式或清除快取(設定 > 進階 > 清除快取)。

常見錯誤與排除

BotFather 回應「Invalid command format」

原因:指令列表的格式不符合規範。每一行必須嚴格為 command - description,注意中間的「空格-空格」不可省略。此外,指令名稱只能使用小寫字母、數字和底線,且不可包含空格或特殊符號。解決方案:檢查是否誤用了全形符號或多餘空格。

指令選單未更新

可能原因:用戶端快取或舊版客戶端不支援動態選單。請關閉 Telegram 並重新開啟;若問題持續,可嘗試清除應用程式快取(設定 > 進階 > 清除快取)。若仍無效,請確認用戶端版本是否過舊,並考慮更新。

多個機器人共用同一組指令

每個機器人的指令是獨立儲存的,使用 /setcommands 時請確認選取了正確的機器人。若不慎選錯,可再次執行 /setcommands 並選擇正確目標。另外,透過 API 設定時則不會有混淆問題,因為 Token 已明確指定機器人身份。

多個機器人共用同一組指令
多個機器人共用同一組指令

適用與不適用場景

建議使用 BotFather 設定的情況

  • 非技術背景的機器人管理者,只需基本互動指令,無需程式介入。
  • 快速原型驗證,需要在幾分鐘內上線測試,例如開發初期的概念驗證。
  • 機器人僅服務單一群組或頻道,無需區分語言或對話類型,全域指令已足夠。

建議使用 API 或避免此設定方式的情況

  • 需要根據使用者語言顯示不同語言的指令描述(例如 /start 在英文下顯示 Start,日文下顯示開始)。
  • 需要針對頻道、群組、私人聊天分別提供不同指令集,避免互相干擾。
  • 指令列表頻繁變更(超過每日一次),手動更新效率低,適合自動化。
  • 機器人服務數百萬用戶,需要指令選單動態調整,例如根據A/B測試呈現不同指令。

最佳實踐與檢查清單

  1. 指令命名一貫性:採用小寫英文、單字間以底線分隔(如 get_weather)。避免使用縮寫過度簡化的名稱,例如 gw 會讓使用者難以理解。
  2. 描述精準:在 256 字限制內說明用途,讓使用者不需要猜測。例如 subscribe - 每日早上8點推送天氣預報 優於 subscribe - 訂閱。
  3. 限制指令數量:實務上 5~8 個指令最適合,超過 10 個會讓選單難以瀏覽。可使用巢狀選單(透過 Inline Keyboard)或透過機器人內指令列舉次要功能。
  4. 定期審視使用統計:透過 API 或其他分析工具觀察哪些指令最常被使用,移除或合併低使用率的指令,保持選單精簡。
  5. 保留 /start 與 /help:即使你沒有自定義,Telegram 預設會顯示這兩個指令,建議不要覆蓋 /start 的標準功能(初始化對話),而 /help 則可自訂為功能說明入口。
  6. 版本相容性:若你的機器人需支援舊版用戶端(如 iOS 8.0 以前的 Telegram),請注意指令選單可能無法正常顯示,請在機器人回覆中提示使用者手動輸入指令。

版本演進與遷移建議

回顧 Telegram Bot API 的發展歷程,指令管理經歷了以下重要變化:

  • 2015 年(API 1.0):指令只能由開發者在 BotFather 中硬編碼,無法動態調整。
  • 2019 年(API 4.8):支援 setMyCommands 和 deleteMyCommands,開發者可透過程式動態管理指令。
  • 2020 年(API 5.2):新增 scope 參數,允許按對話類型(私人、群組、頻道)區分指令。
  • 2021 年(API 5.6):支援語言代碼參數,實現多語言指令描述,提升國際化體驗。

若你的機器人仍完全依賴 BotFather 設定且未使用 API,建議逐步遷移至程式化管理,以便靈活運用上述新特性。遷移步驟如下:

  1. 先透過 BotFather 的 /setcommands 設定全域基礎指令作為 fallback,確保遷移過程中不會中斷服務。
  2. 在機器人程式碼中加入啟動時呼叫 setMyCommands 的邏輯,覆蓋 BotFather 設定(API 設定的優先級高於 BotFather 設定)。
  3. 根據回報與使用數據,逐步引入 scope 與語言參數,實現精細化指令管理。

FAQ 常見問題

已經建立的指令可以修改嗎?

可以。重複執行 /setcommands 並輸入新的列表即可完全覆蓋。或者使用 API 的 setMyCommands 方法。注意 BotFather 不支援局部修改,每次都是全量覆蓋,因此建議先備份舊列表。

指令最少需要設定幾個?

可以為 0 個。如果不設定任何指令,用戶仍可手動輸入 /start 觸發,但不會顯示建議選單。建議至少設定 /start 與 /help,以引導新用戶入門。

指令對群組管理員和非管理員有區別嗎?

指令本身沒有權限限制,任何群組成員都能輸入。若需區分權限,必須在後端處理器中檢查使用者角色。BotFather 不提供基於角色的指令顯示功能,但可透過 API 搭配自訂 scope 實現部分控制。

可以為指令設定中文名稱嗎?

指令名稱只能使用小寫英文字母、數字和底線。描述可以使用任何 Unicode 字元,包括中文。因此指令顯示的說明文字可以完全中文化,但斜線命令本身仍需維持英文。

為什麼我設定了指令,但在群組中輸入 / 沒有出現?

請確認你是在正確的對話中(機器人必須是群組成員)。此外,某些用戶端可能因隱私設定而未啟用建議指令,請檢查 Telegram 設定 > 語言與輸入 > 建議指令是否開啟。若仍無效,可嘗試重新啟動應用程式。

結語:下一步行動建議

現在你已經學會如何透過 BotFather 建立 Telegram 機器人並新增指令。接下來可以嘗試:

  • 為機器人設定隱私模式(透過 BotFather 的 /setprivacy),決定是否接收群組中所有訊息。
  • 使用 /setuserpic 為機器人上傳頭像,提升品牌辨識度。
  • 研究 Bot API 文件,將指令管理自動化並加入更多動態功能,例如根據使用者行為動態調整指令。

掌握指令設定,等於掌握了機器人與使用者溝通的捷徑。無論你是新手還是老手,建議定期審視指令使用數據,持續優化。展望未來,Telegram Bot API 持續演進,可能引入更細緻的指令權限控制或動態建議功能,開發者應保持關注官方更新日誌。立刻打開 Telegram 與 @BotFather 對話,建立你的第一個指令吧!