Telegram-Bot
這個專案是一個用 Go 開發 Telegram-Bot 的起手式模板,不把所有邏輯都塞進單一 main.go。它提供可直接運作的 runtime 骨架、實用的指令面、session 儲存、健康檢查,以及同時涵蓋本地開發與正式環境的傳輸模式。
目前已內建的能力
cmd/server單一程序入口- 以環境變數驅動的設定與驗證
- 同時支援 polling 與 webhook 的 Telegram transport
- 啟動時自動同步 Telegram command menu
- 內建
/start、/help、/ping、/echo、/keyboard、/hidekeyboard、/menu、/session - inline query 與 callback query 範例
/、/healthz、/readyzHTTP 端點- Redis session store 與 in-memory fallback
- 本地基礎設施與容器化執行的 Docker Compose 設定
這份文件會涵蓋什麼
- 應用程式如何啟動、驗證設定並做 graceful shutdown
- Telegram update 如何被路由到 command handler
- session key 在 memory 與 Redis 中的儲存方式
- 如何在本地用 polling、在部署環境用 webhook 運行
- 如何在不破壞現有架構的前提下擴充模板
核心分層
cmd/server載入環境變數、設定 logger、驗證 config、處理 signalinternal/config解析與驗證 environment variablesinternal/app負責 bot service、session backend 與 HTTP server 的 wiringinternal/bot負責 Telegram transport 與 handler 註冊internal/handler提供 health check 與 webhook 入口internal/session抽象 session persistence
這樣的分層把 Telegram SDK 細節收斂在單一區塊,也為之後抽出 use case 或 domain logic 留出空間。
內建互動模式
這個模板雖然小,但已經涵蓋常見的 Telegram bot 互動形式:
- slash commands
- reply keyboard
- inline keyboard 與 callback data
- inline query 回覆
- 具 TTL 的 chat-scoped session counter
- 未匹配文字訊息的預設 fallback 回覆
這些能力足夠讓它成為真正可延伸的 bot 起點,而不只是 transport demo。