Telegram Channel Plugin 修復指南

最後更新:2026-03-26 14:32 狀態:✅ 正常運作


現時架構

用戶 Telegram (@steven_cc_bot)
    ↓
官方 Channels Plugin (plugin:telegram@claude-plugins-official v0.0.4)
    ↓ MCP notifications/claude/channel
Claude Code (tmux cc session)
    ↓
回覆經 mcp__plugin_telegram_telegram__reply

重要:唔再用 tg-daemon(已刪除)。全部靠官方 plugin。


關鍵檔案

檔案用途
/home/claude/start-claude.sh啟動腳本,含正確 flags
/etc/systemd/system/claude-code.service系統服務
~/.claude/channels/telegram/.envBot token + Groq key
~/.claude/channels/telegram/access.json白名單設定
~/.claude/plugins/installed_plugins.jsonPlugin 安裝記錄

正確啟動指令

claude --dangerously-skip-permissions --continue --channels plugin:telegram@claude-plugins-official

⚠️ 重要:start-claude.sh 係冇自動重啟 loop 嘅!

現時 start-claude.sh 直接跑 Claude,唔會自動重啟。

  • /exit 之後要自己係 terminal 打返上面條指令
  • 或者直接 send TG 訊息(如果 Claude 仲跑緊)

之前試過 while loop 自動重啟,但係 loop 令 Telegram plugin 起唔到,所以刪咗。


語音訊息處理

官方 plugin 唔內建語音轉錄,要手動處理:

# 1. download_attachment 下載 .oga 檔
# 2. 改名 .oga → .ogg
# 3. 用 Groq Whisper 轉錄
 
GROQ_API_KEY=$(grep GROQ_API_KEY ~/.claude/channels/telegram/.env | cut -d= -f2)
cp file.oga file.ogg
curl -s -X POST "https://api.groq.com/openai/v1/audio/transcriptions" \
  -H "Authorization: Bearer $GROQ_API_KEY" \
  -F "file=@file.ogg" \
  -F "model=whisper-large-v3-turbo" \
  -F "response_format=text"

常見問題 & 快速修復

問題 1:TG 訊息唔 inject 入 Claude session

症狀:Send 訊息但 Claude 收唔到,或者 plugin 工具能用但無 inbound

診斷

ps aux | grep "bun server.ts" | grep -v grep
claude plugin list

原因 A--channels flag 唔見咗

cat /home/claude/start-claude.sh | grep channels

→ 如果冇,加返去然後 restart

原因 B:Plugin 係 disabled

claude plugin enable telegram@claude-plugins-official

→ 然後 /exit 等 loop 重啟

原因 C:tg-daemon 同 plugin 同時跑(搶 updates)

sudo systemctl stop tg-daemon.service
sudo systemctl disable tg-daemon.service

問題 2:Claude Code service 起唔到 / tg-daemon log 路徑問題

症狀systemctl status 顯示 exit-code 209/STDOUT

修復

# 改 log 路徑去 home directory(/tmp 有時被 systemd 鎖住)
sudo sed -i 's|/tmp/tg-daemon.log|/home/claude/tg-daemon.log|' /etc/systemd/system/tg-daemon.service
sudo systemctl daemon-reload && sudo systemctl start tg-daemon.service

(但 tg-daemon 已刪除,呢個只係備用參考)


問題 3:Plugin 起咗但 bun server.ts 係獨立 process(唔係 Claude 嘅 child)

症狀:有收到 TG 訊息 log,但唔 inject 入 Claude

診斷

pstree -p $(pgrep -f "claude --dangerously" | head -1) | grep bun

→ 如果 bun 唔係 Claude 嘅 child,plugin 連接係壞嘅

修復:Kill 所有 bun,然後 /exit 等 loop 重啟

pkill -f 'bun server.ts'
# 然後係 Claude session 入 /exit

驗證正常運作

# 1. 確認 Claude process 有 --channels flag
ps aux | grep "claude --dangerously" | grep channels
 
# 2. 確認 bun server.ts 係 Claude 嘅 child
pstree -p $(pgrep -f "claude --dangerously" | head -1) | grep bun
 
# 3. 確認 plugin enabled
claude plugin list
 
# 4. Send "hi" 去 @steven_cc_bot,睇係咪收到 👀 reaction

Access 設定

{
  "dmPolicy": "allowlist",
  "allowFrom": ["8319718417"],
  "ackReaction": "👀",
  "replyToMode": "first",
  "textChunkLimit": 4096,
  "chunkMode": "newline"
}

Bot token 喺 ~/.claude/channels/telegram/.env