# Hermes + Telegram 串接設定指南

# 前置準備

  1. 安裝 Hermes(如果還沒裝)
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
  1. 跟 @BotFather 申請 Bot Token
  • Telegram 搜尋 @BotFather
  • /newbot
  • 照提示輸入 bot 名稱,拿到的 token 長這樣:
123456789:AAHabc...xyz
  • 注意:這是 bot 的 token,不是 user ID!格式有冒號分隔
  1. 取得你的 Telegram User ID
  • 搜尋 @userinfobot@getidsbot
  • 傳任意訊息,會回你的數字 ID(如 7790750726

# 設定流程

# 1. 啟動設定精靈

hermes gateway setup

照順序回答:

步驟 問題 回答
1 選平台 Telegram
2 Bot token 貼上 @BotFather 給的完整 token
3 Allowed user IDs 你的 Telegram user ID(可多個用逗號分隔)
4 Home channel ID 留空按 Enter(之後可用 /set-home 設定)
5 Use user ID as home channel? Y 確認
6 Install as launchd service? Y(macOS 开机自启)
7 Start service now? Y

# 2. 啟動 Gateway

hermes gateway run

或使用 launchd 服務(後台運行,开机自啟):

hermes gateway start # 啟動
hermes gateway stop # 停止
hermes gateway restart # 重啟
hermes gateway status # 看狀態

# 3. 測試

去 Telegram 找你的 bot(@你的bot名),傳 /start 應該會回覆。


# 踩過的坑

# 坑 1:Bot Token 與 User ID 搞混

錯誤:把 user ID 當成 bot token 貼進去

症狀

telegram.error.InvalidToken: Not Found
The token `8762865992:***` was rejected by the server.

正確的區分

  • Bot Token:123456789:AAHabc...xyz(有冒號分隔,是 @BotFather 給的)
  • User ID:7790750726(純數字,是你自己)

# 坑 2:.env 檔案儲存不完整或重複

症狀:curl 測試 token 有效,但 Hermes gateway 就是連不上

# curl 測試 ok
curl "https://api.telegram.org/bot<YOUR_TOKEN>/getMe"
# {"ok":true,"result":{"username":"你的bot",...}}

# 但 gateway log 一直說 token invalid

原因.env 裡的 TELEGRAM_BOT_TOKEN 被重複寫入或有截斷

檢查方法

grep TELEGRAM_BOT_TOKEN ~/.hermes/.env
awk 'NR==375' ~/.hermes/.env | od -c # 看實際儲存的位元組

修復方法

# 備份
cp ~/.hermes/.env ~/.hermes/.env.bak

# 手動編輯,把行 375 改成正確的 token
nano ~/.hermes/.env

# 坑 3:Launchd Service 吃到舊設定

症狀:改了 .env 但 gateway 還是連不上

修復方法

# 卸載並重新載入 service
launchctl unload ~/Library/LaunchAgents/ai.hermes.gateway.plist
launchctl load ~/Library/LaunchAgents/ai.hermes.gateway.plist

# 或暴力重裝
hermes gateway uninstall
hermes gateway install

# 坑 4:測試 bot 要去正確的私人對話

注意:跟 @userinfobot 拿 user ID 時,要在該 bot 的私人對話傳訊息,不是群組或頻道。


# 日誌查看

# 即時看 gateway log
tail -f ~/.hermes/logs/gateway.log

# 看 error log
tail -f ~/.hermes/logs/gateway.error.log

# 看 service 狀態
hermes gateway status

# 相關指令速查

hermes gateway run # 前台啟動(看即時 log)
hermes gateway start # 後台啟動
hermes gateway stop # 停止
hermes gateway restart # 重啟
hermes gateway status # 狀態

launchctl list | grep hermes # 看 launchd 裡的 service
launchctl unload/load # 重新載入 service

# 參考資源