如何在Telegram中從頭建立一個新機器人?

前言:為什麼要自己建立 Telegram 機器人?
Telegram 機器人是自動化訊息的基石,無論是頻道管理、客服回覆、資料查詢,還是物聯網通知,一個客製化的 Bot 都能大幅提升效率。本文將手把手帶你從頭建立一個新機器人,從註冊到部署,涵蓋 BotFather 操作、Token 管理、指令設定、權限控制以及 Webhook 與 Polling 的取捨。無需寫程式也能完成基礎設定,但後續開發仍需要基本程式能力。
前置條件:你需要的環境
開始之前,請確認以下項目:
- 一個已驗證的 Telegram 帳號(手機號碼綁定)。
- 能夠存取 BotFather(Telegram 官方機器人管理員,使用者名稱 @BotFather)。
- (選擇性)一台可以執行程式的伺服器或本機,用於後續開發與部署。
所有操作皆可在 Telegram 客戶端內完成,Android、iOS、桌面版(Windows/macOS/Linux)路徑略有差異,但核心步驟一致。舉例來說,搜尋 BotFather 的方式在各平台幾乎相同,但按鈕位置可能因系統版本而有些微不同。
⚠️ 注意: 本文撰寫時間為 2026 年 10 月,以截至當前的最新版本為準。Telegram 可能更新 UI,請以實際介面為準。
第一步:透過 BotFather 建立機器人
找到 BotFather 並啟動對話
在 Telegram 搜尋框中輸入 @BotFather,點選進入。確認機器人名稱旁有藍色勾號(官方認證)。點擊「Start」按鈕或輸入 /start,即可看到 BotFather 的回應選單。這是整個流程的起點。
平台差異: Android 與 iOS 的搜尋位置相同(頂部搜尋欄);桌面版可透過左側聯絡人清單的搜尋框找到。如果找不到,請確認網路連線正常,或嘗試清除 Telegram 快取後重新搜尋。
執行 /newbot 指令
輸入 /newbot,BotFather 會依序要求你提供兩個名稱:
- 顯示名稱(Display Name):用戶在聊天中看到的名稱,可包含空格與表情符號,長度上限 64 字元。例如「天氣小幫手」。
- 使用者名稱(Username):唯一識別碼,必須以
bot結尾(不區分大小寫),且不可與任何現有 Bot 重複。例如「WeatherHelperBot」。
若使用者名稱已被佔用,BotFather 會提示「Sorry, this username is already taken.」,請換一個組合。建議包含功能關鍵字,例如查天氣選 "WeatherBot",方便用戶搜尋。若想保留名稱但暫時無法決定,可先用佔位名稱,日後透過 /setusername 修改。
💡 提示: 使用者名稱一經設定,日後可透過 /setusername 修改,但顯示名稱隨時可變。建議初期先取一個通用名稱,後續根據回饋調整。例如先用「MyTestBot」,正式上線前再改為「WeatherHelperBot」。
成功後的 Token 獲取
建立成功後,BotFather 會回傳一則訊息,包含:
- 機器人的使用者名稱(例如 @WeatherHelperBot)。
- 一個 HTTP API Token(格式如
123456:ABCdef...)。 - 前往 Bot API 文件的連結。
Token 是機器人的金鑰,務必保密。 任何人持有 Token 都可以完全控制你的 Bot,包括發送訊息、獲取用戶資料。建議立即複製並儲存到安全位置(如密碼管理器),不要在公開頻道或版本控制系統中明文留存。範例:若不小心將 Token 貼到公開 GitHub 倉庫,應立即撤銷並重新產生。
第二步:設定機器人基礎資訊
修改描述與關於資訊
回到 BotFather 對話,可透過以下指令自訂:
/setdescription:設定 Bot 簡短說明(最多 512 字元),會顯示在「介紹」頁面。/setabouttext:設定「關於」資訊,同樣最多 512 字元。/setuserpic:上傳頭像圖片(建議 512×512 以上,JPG 或 PNG)。
平台差異: Android 與 iOS 的上傳照片路徑:/setuserpic 後 BotFather 會要求傳送圖片,從相簿選取即可;桌面版支援拖曳或選取檔案。若圖片比例不符,Telegram 會自動裁剪為正方形。
建立指令清單
指令(Commands)是機器人與用戶互動的主要入口。使用 /setcommands 可一次設定多個指令。格式為每行一個指令,指令與說明以空白或縮排分隔。例如:
help - 顯示幫助資訊
weather - 查詢天氣
指令名稱必須小寫、不含特殊字元,長度 1-32 字元。官方建議指令數量不超過 100 個,但經驗上 10-20 個最符合用戶習慣,避免過多選項造成混淆。可後續透過 /setcommands 覆蓋更新,無需重建機器人。
第三步:選擇更新接收方式(Webhook vs Long Polling)
機器人需要接收來自 Telegram 伺服器的事件(訊息、指令、回撥等)。官方提供兩種模式:Webhook 與 Long Polling(也稱 getUpdates)。選擇哪一種取決於你的部署環境與效能需求。下面分別說明兩者的運作原理與適用時機。
Webhook:即時推送
Webhook 允許 Telegram 在有事件發生時,主動向你的伺服器發送 HTTPS POST 請求。優點是延遲低、節省輪詢資源;缺點是需要公開網址(支援 HTTPS)且需要設定 SSL 憑證。舉例來說,如果你的伺服器放在 Cloudflare 後面,Webhook 設定非常簡便。
設定方法: 使用瀏覽器或程式發送請求到 https://api.telegram.org/bot<TOKEN>/setWebhook?url=你的網址。例如:
成功後回傳 JSON 包含 "ok":true。若要移除 Webhook 改回 Polling,使用 /deleteWebhook。建議用 curl 或 Postman 測試。
邊界條件: Telegram 要求 Webhook URL 使用 443、80、88、8443 等埠號,且憑證必須為受信任的 CA 簽署(不支援自簽憑證)。如果使用 Cloudflare、Heroku、Vercel 等服務,通常內建 TLS,可直接使用。若使用自簽憑證,可考慮用反向代理如 Nginx 轉發。
Long Polling:輪詢更新
使用 getUpdates API 定期向 Telegram 請求新訊息。優點是無需公開伺服器、適合開發測試;缺點是延遲較高(取決於輪詢間隔),且如果同時開啟多個實例會導致更新遺失。例如,在本機開發時用 Polling 即可,無需暴露埠號。
經驗性觀察: 對於每日訊息量少於 1000 條的個人專案,Long Polling 搭配 2-3 秒間隔完全夠用且開發成本更低。當機器人需要服務數十萬用戶時,Webhook 的即時性與效率優勢才明顯顯現。你可以先以 Polling 快速驗證核心功能,再遷移至 Webhook。
⚠️ 警告: 兩種模式不可同時啟用。若設定 Webhook 後又嘗試用 getUpdates,會收到錯誤(409 Conflict)。務必先刪除 Webhook 再切換回 Polling。建議在程式碼中統一管理狀態。
第四步:設定權限與隱私模式
Privacy Mode(隱私模式)
預設情況下,機器人只會收到與其直接相關的訊息(群組中@提及或私聊)。若需讓機器人讀取群組中所有訊息(例如自動審核工具),必須透過 BotFather 的 /setprivacy 將其設為 Disabled。這個設定影響機器人能否看到群組中其他用戶的對話。
取捨建議: 除非明確需要監聽所有對話,否則維持預設的 Privacy Mode(Enabled)既可保護用戶隱私,也減少不必要的流量。例如,一個天氣查詢機器人不需要讀取群組所有訊息,只需處理 @提及即可。
群組權限(Group Admin Rights)
將機器人加入群組後,可透過 /setjoingroup 與 /setprivacy 控制其行為。若要讓機器人成為管理員,需要手動在群組設定中指派「管理員」角色,並勾選允許的權限(例如刪除訊息、置頂、發送訊息等)。常見應用:自動刪除垃圾訊息的機器人需要「刪除訊息」權限。
平台差異: Android 與 iOS 上指派管理員:進入群組資訊→管理員→新增管理員→選擇機器人→設定權限。桌面版路徑類似,點擊群組名稱進入設定。注意,機器人必須先被加入群組才能提升為管理員。
第五步:測試與故障排查
初步測試:傳送訊息給機器人
建立完成後,直接點擊 BotFather 給你的機器人連結(如 t.me/WeatherHelperBot),或搜尋使用者名稱。點擊 Start,如果機器人有回應(後端程式已運作),即可開始互動。若無回應,請檢查 Token 是否正確、伺服器是否執行。可以先用 getMe API 測試 Token 有效性。
常見錯誤與解決
| 現象 | 可能原因 | 驗證方法 | 處置 |
|---|---|---|---|
| 機器人無回應 | 伺服器未啟動 / Token 錯誤 / IP 被封 | 用瀏覽器測試 https://api.telegram.org/bot<TOKEN>/getMe |
確認 Token 正確;若回傳 401,重新複製 Token |
| Webhook 設定失敗 | URL 不是 HTTPS / 埠號不符 / SSL 憑證問題 | 查看 https://api.telegram.org/bot<TOKEN>/getWebhookInfo |
檢查 URL 是否可公開存取;使用 SSL Labs 檢測憑證 |
| 群組中指令無效 | 機器人未取得管理員權限 / Privacy Mode 阻擋 | 在群組中輸入 / 看是否出現指令提示 |
指派管理員並確保「發送訊息」權限開啟 |
以上表格列出最常見的三種問題。若仍無法解決,可查看 Telegram Bot API 錯誤碼說明。
適用與不適用場景
適合建立自己的 Bot 的場景
- 個人通知工具:如 RSS 監控、伺服器警報、定時提醒。
- 小型社群管理:自動歡迎、過濾垃圾訊息、投票統計。
- API 聚合查詢:天氣、匯率、股票、翻譯等。
- 內部團隊的自動化流程:提交工單、排程提醒。
這些場景對開發成本敏感,且功能需求明確,非常適合自建。
不建議自己從頭打造的場景
- 只需要簡單回覆:考慮使用第三方服務(如 ManyBot、Chatfuel)無需編碼。
- 需要大量用戶資料儲存:Bot 的記憶體有限,需自己建後端資料庫。
- 支付處理:Telegram 內建 Stars 支付需額外申請,流程較複雜。
- 高效能即時通訊(>10 萬同時連線):建議使用商業託管解決方案。
在這些情況下,自建成本較高,優先評估現有平台。
進階:與其他 Telegram 功能協同
機器人可以與 Telegram 的 Inline Query、Callback Query、鍵盤(Reply Keyboard / Inline Keyboard)結合,提供更豐富的交互。例如:
- Inline Mode:用戶在聊天輸入
@你的機器人 關鍵字,直接回傳結果。適用於快速查詢。 - Web App:透過
WebAppData將按鈕連結到外部網頁,處理複雜表單。 - Bot API 6.0+ 支援選單按鈕(Menu Button)設定。
詳細設定請參考 Telegram Bot API 官方文件,所有功能皆以 API 文件為準。建議在開發前先閱讀相關章節。
FAQ:常見問題
建立機器人需要付費嗎?
不需要。Telegram Bot API 完全免費,你只需要一個 Telegram 帳號即可透過 BotFather 建立任意數量的機器人。但如果你需要商用級基礎設施(如高效能伺服器),則需自行負擔雲端費用。
Token 被公開了怎麼辦?
立即向 BotFather 發送 /revoke 指令撤銷舊 Token,並重新產生一組新 Token。同時檢查是否有未經授權的操作(例如發送垃圾訊息)。撤銷後舊 Token 立即失效,可搭配日誌追蹤異常行為。
機器人每天能發送多少訊息?
Telegram 官方未公佈明確硬限制,但基於實際觀察,大約每分鐘可發送 30 條左右(經驗性數據,非保證值)。若需大量發送,建議使用 sendMessage 搭配佇列控制,避免觸發速率限制(429 Too Many Requests)。若遇到限流,可在錯誤處理中加入指數退避重試。
可以同時使用 Webhook 和 Long Polling 嗎?
不可以。兩者互斥,若設定 Webhook 後呼叫 getUpdates 會回傳錯誤。切換時請先使用 /deleteWebhook 或設定 Webhook 為空 URL。建議開發階段使用 Polling,生產環境使用 Webhook。
最佳實踐清單
- Token 安全: 使用環境變數或密碼管理器,絕不提交到 Git 倉庫。
- Log 記錄: 機器人執行初期記錄所有收發訊息,便於除錯。
- 錯誤處理: 針對 API 回傳的 429、403 等錯誤設計重試邏輯。
- 監控: 設定 uptime monitor 定期 ping 你的伺服器或檢查 getMe 回應。
- 最小權限: 只賦予機器人必要權限,避免隱私風險。
- 更新依賴: 定期檢查 Bot API 變更日誌,調整程式碼。
遵循這些建議可讓機器人更穩定、安全。
結論與下一步行動
從頭建立一個 Telegram 機器人只需幾分鐘:找到 BotFather、建立 Bot、獲取 Token、設定基本資訊。關鍵決策在於選擇 Webhook 或 Polling,以及權限配置。後續開發可參考 官方文檔,編寫自己的處理邏輯。
下一步建議:
- 若無程式經驗,先嘗試使用第三方平台(如 ManyBot)體驗流程。
- 若有程式基礎,從 Python 搭配 python-telegram-bot 或 Node.js 的 Telegraf 開始。
- 部署到免費雲端服務(如 Railway、Render)以測試 Webhook。
- 逐步加入進階功能:自訂鍵盤、Inline Query、支付等。
記得持續觀察機器人運行狀態,根據回饋迭代。祝你開發順利!
📺 相關視頻教程
【Telegram Bot 教學】5分鐘簡單學會!申請 Bot Token 與 Chat ID 完整步驟