所有文章
在 Telegram 群組中設定 OpenClaw——設定、權限、多 Agent

在 Telegram 群組中設定 OpenClaw——設定、權限、多 Agent

|6 分鐘閱讀

在 Telegram 群組中設定 OpenClaw——設定、權限、多 Agent

OpenClaw 的 Telegram 整合不只是一對一聊天。當你把 bot 加入群組,它就變成了一個可以參與團隊對話的 AI 助手——回答技術問題、幫忙整理會議記錄、甚至與其他 Agent 協作。

但群組環境比私聊複雜得多。你需要處理的問題包括:bot 什麼時候該回應、什麼時候該安靜?如何防止它被群組中的垃圾訊息觸發?多個 Agent 在同一個群組裡怎麼分工?

本文會從最基礎的「把 bot 加入群組」開始,一步步帶你建立一個穩定、好用的群組 AI 助手環境。


前置條件

在開始之前,你需要:

  1. 一個已經完成 openclaw onboard 的 OpenClaw 實例(本地或伺服器皆可)
  2. 一個已透過 BotFather 建立的 Telegram bot[1]
  3. OpenClaw 已設定好 Telegram 連線(openclaw.json 中的 telegram 區塊)

如果你還沒設定 Telegram bot,先完成基本設定:

openclaw pairing start telegram

按照指示輸入 BotFather 給你的 bot token,然後在 Telegram 中與 bot 開始對話、完成配對。


第一步:將 bot 加入群組

在 Telegram 中:

  1. 開啟你要新增 bot 的群組
  2. 點擊群組名稱 → 「新增成員」
  3. 搜尋你的 bot 名稱(例如 @YourOpenClawBot
  4. 將它加入群組

加入後,bot 暫時還不會回應群組訊息。你需要先取得群組 ID,然後在 OpenClaw 設定中啟用群組功能。


第二步:取得群組 ID

這是最多人卡關的步驟。Telegram 群組的 ID 是一個負數(例如 -1001234567890),不像使用者 ID 那樣容易取得。

方法一:從 OpenClaw 日誌取得(推薦)

OpenClaw 的 gateway 會在日誌中記錄收到的訊息,包含 chat ID。

先在群組中發一條訊息(任何內容),然後查看 gateway 日誌:

# 如果用 systemd 管理
journalctl --user -u openclaw.service -f

# 如果在終端機直接運行
# 日誌直接輸出在終端機中

你會看到類似這樣的日誌:

[telegram] received message from chat_id: -1001234567890, type: group
[telegram] message ignored: group chat not configured

記下這個 chat_id

方法二:使用 Telegram Bot API

如果日誌方法不便(例如日誌量太大),可以直接呼叫 Bot API:

# 用你的 bot token 替換 <BOT_TOKEN>
curl -s "https://api.telegram.org/bot<BOT_TOKEN>/getUpdates" | python3 -m json.tool

注意:如果 OpenClaw 正在 polling(也就是 gateway 在運行中),getUpdates 可能會回傳空陣列,因為訊息已經被 OpenClaw 消費掉了。這種情況下請用方法一。

方法三:暫停 gateway 後使用 getUpdates

# 暫停 OpenClaw gateway
openclaw gateway stop

# 在群組中發一條訊息,然後呼叫 API
curl -s "https://api.telegram.org/bot<BOT_TOKEN>/getUpdates" | \
  python3 -c "
import json, sys
data = json.load(sys.stdin)
for result in data.get('result', []):
    chat = result.get('message', {}).get('chat', {})
    if chat.get('type') in ('group', 'supergroup'):
        print(f\"Group: {chat.get('title')} -> ID: {chat.get('id')}\")
"

# 記得重啟 gateway
openclaw gateway start

第三步:設定 openclaw.json 的群組區塊

取得群組 ID 後,編輯你的 OpenClaw 設定檔:

# 設定檔通常在這裡
nano ~/.config/openclaw/openclaw.json

telegram 區塊中加入 groups 設定:

{
  "telegram": {
    "botToken": "your-bot-token",
    "groups": {
      "-1001234567890": {
        "enabled": true,
        "groupPolicy": "mention-only",
        "requireMention": true,
        "allowedUsers": [],
        "agentId": "default"
      }
    }
  }
}

重啟 gateway 讓設定生效:

openclaw gateway restart

群組設定參數詳解

groupPolicy

控制 bot 在群組中的回應策略:

行為
mention-only 只在被 @mention 時回應(推薦)
all-messages 回應所有訊息(慎用)
reply-only 只在被 reply 時回應
keyword 符合關鍵字時回應
{
  "groupPolicy": "mention-only"
}

強烈建議使用 mention-only。如果設成 all-messages,bot 會對群組中每一條訊息做出回應,不但消耗大量 API 額度,還會讓群組對話難以閱讀。

requireMention

{
  "requireMention": true
}

當設為 true,使用者必須用 @YourBotName 標記 bot 才會觸發回應。即使 groupPolicy 設為 all-messages,這個旗標也能作為額外的安全閥。

allowedUsers

限制哪些使用者可以觸發 bot 回應:

{
  "allowedUsers": [123456789, 987654321]
}

空陣列 [] 表示允許所有群組成員。如果你只想讓特定人使用 bot,填入他們的 Telegram user ID。

取得使用者 ID 的方式:讓他們私訊 bot,然後從日誌中查看 user_id

agentId

指定這個群組使用哪個 Agent 設定:

{
  "agentId": "research-agent"
}

這對應到你在 agents/ 目錄下定義的 Agent。不同群組可以使用不同的 Agent。


@mention 行為細節

requireMentiontrue 時,以下情境會觸發 bot 回應:

@YourBotName 幫我查一下這個 API 的文件
這個 bug 怎麼修?@YourBotName
@YourBotName
(直接 mention 不帶內容,bot 會回應一個歡迎/幫助訊息)

以下情境不會觸發回應:

這個 YourBotName 好像很好用
(只是文字提到名稱,不是 @mention)
昨天有人說 @SomeOtherBot 比較好
(mention 的不是你的 bot)

回覆(Reply)作為隱式 mention

有一個重要行為:回覆 bot 的訊息等同於 @mention

也就是說,如果有人回覆 bot 之前發的訊息,bot 會把它當作新的提問來回應,即使訊息內容沒有 @mention。這讓對話流更自然——使用者可以用 reply 串起多輪對話,而不用每次都打 @BotName

{
  "treatReplyAsMention": true
}

預設為 true。如果你不想要這個行為,設為 false


多 Agent 群組設定

這是 OpenClaw 群組功能最強大的特性之一:你可以在同一個群組中部署多個 Agent,每個 Agent 有不同的專長。

架構概念

假設你的團隊有一個技術討論群組,你想要:

  • 一個「程式碼審查 Agent」——專門回答程式碼相關問題
  • 一個「文件搜尋 Agent」——專門從內部文件庫找資料
  • 一個「會議記錄 Agent」——幫忙整理對話重點

設定方式

首先,在 agents/ 目錄下建立各 Agent 的設定:

~/.config/openclaw/agents/
  code-review.md
  doc-search.md
  meeting-notes.md

code-review.md 範例:

# Code Review Agent

你是一個程式碼審查專家。當團隊成員在群組中分享程式碼片段或詢問程式碼相關問題時,
提供詳細的審查意見,包括:
- 潛在的 bug
- 效能問題
- 最佳實踐建議
- 安全性考量

只回應與程式碼直接相關的問題。其他類型的問題交給群組中的其他 Agent 處理。

然後在 openclaw.json 中設定多 bot 的群組:

{
  "telegram": {
    "groups": {
      "-1001234567890": {
        "enabled": true,
        "groupPolicy": "mention-only",
        "agents": [
          {
            "botToken": "bot-token-for-code-reviewer",
            "agentId": "code-review",
            "botUsername": "CodeReviewBot"
          },
          {
            "botToken": "bot-token-for-doc-search",
            "agentId": "doc-search",
            "botUsername": "DocSearchBot"
          },
          {
            "botToken": "bot-token-for-meeting-notes",
            "agentId": "meeting-notes",
            "botUsername": "MeetingNotesBot"
          }
        ]
      }
    }
  }
}

注意:每個 Agent 需要一個獨立的 Telegram bot。你需要在 BotFather 建立三個不同的 bot。

使用者互動方式

群組成員可以用 @mention 指定要哪個 Agent 回應:

@CodeReviewBot 這段 SQL 查詢有什麼問題?
SELECT * FROM users WHERE id = '${input}';
@DocSearchBot 我們的 API rate limiting 規則是什麼?
@MeetingNotesBot 幫我整理過去一小時的討論重點

Lobstalk 技能:Agent 間協作

OpenClaw 的 lobstalk skill 讓 Agent 之間可以互相溝通[2]。當一個 Agent 判斷問題不在自己的專長範圍,它可以主動將問題轉交給另一個 Agent。

在 Agent 的設定中啟用 lobstalk:

# Code Review Agent

## Skills
- lobstalk

## Handoff Rules
如果使用者的問題與內部文件相關(而非程式碼),
使用 lobstalk 將問題轉交給 @DocSearchBot。

這讓使用者不需要知道該問哪個 bot——任何一個 bot 都能當入口,再由 Agent 之間的協作來找到最適合的回答者。


BotFather 隱私模式

這是一個容易被忽略但非常重要的設定。

Telegram bot 預設啟用「隱私模式」(Privacy Mode)[3]。在隱私模式下,群組中的 bot 只能收到:

  • 直接 @mention 它的訊息
  • 回覆它的訊息
  • 指令(以 / 開頭的訊息)
  • 群組中的 service 訊息(成員加入/離開等)

它收不到其他成員的一般聊天訊息

如果你用 mention-only 策略

隱私模式可以保持開啟,因為 bot 只需要收到 @mention 的訊息,這與隱私模式的行為一致。

如果你用 all-messages 策略

你需要關閉隱私模式,否則 bot 會漏掉大量訊息。

在 BotFather 中操作:

/mybots → 選擇你的 bot → Bot Settings → Group Privacy → Turn off

關閉隱私模式後,bot 可以看到群組中的所有訊息。確保你的 Agent 設定中有適當的過濾邏輯,避免對不相關的訊息做出回應。

如果你用 keyword 策略

也需要關閉隱私模式,因為 bot 需要讀取所有訊息來匹配關鍵字。

groupPolicy 需要關閉隱私模式?
mention-only 否(建議保持開啟)
reply-only
all-messages
keyword

防止垃圾訊息

群組環境的一大挑戰是垃圾訊息。如果有人故意或無意地大量觸發 bot,會消耗你的 API 額度,也可能影響群組的正常使用。

Rate Limiting

在群組設定中加入速率限制:

{
  "-1001234567890": {
    "enabled": true,
    "groupPolicy": "mention-only",
    "rateLimit": {
      "messagesPerMinute": 10,
      "messagesPerHour": 100,
      "perUser": {
        "messagesPerMinute": 3,
        "messagesPerHour": 30
      }
    }
  }
}

這個設定表示:

  • 整個群組每分鐘最多觸發 10 次 bot 回應
  • 每小時最多 100 次
  • 單一使用者每分鐘最多 3 次,每小時最多 30 次

超過限制時,bot 會靜默忽略訊息(不會發送「你太頻繁了」之類的回應,以免造成更多噪音)。

忽略轉發訊息

轉發訊息通常不是要問 bot 的內容。你可以設定忽略它們:

{
  "ignoreForwarded": true
}

最小訊息長度

太短的訊息通常沒有足夠的上下文讓 Agent 產生有意義的回應:

{
  "minMessageLength": 10
}

封鎖特定使用者

如果有使用者持續濫用 bot,你可以在設定中封鎖他們:

{
  "blockedUsers": [111222333]
}

每個群組的自訂設定

不同群組可能需要不同的行為。OpenClaw 允許你為每個群組設定獨立的參數:

{
  "telegram": {
    "groups": {
      "-1001234567890": {
        "enabled": true,
        "groupPolicy": "mention-only",
        "agentId": "technical-support",
        "language": "zh-TW",
        "maxResponseLength": 2000,
        "rateLimit": {
          "messagesPerMinute": 10
        }
      },
      "-1009876543210": {
        "enabled": true,
        "groupPolicy": "all-messages",
        "agentId": "casual-chat",
        "language": "en",
        "maxResponseLength": 500,
        "rateLimit": {
          "messagesPerMinute": 20
        }
      }
    }
  }
}
  • 第一個群組(-1001234567890)是技術支援群,用中文回應,每次回應最多 2000 字
  • 第二個群組(-1009876543210)是閒聊群,用英文回應,回應簡短些但允許更高的觸發頻率

群組管理命令

OpenClaw 提供了一些方便的管理命令,可以直接在群組中使用:

透過 CLI

# 列出所有已設定的群組
openclaw telegram groups list

# 查看特定群組的狀態
openclaw telegram groups status -1001234567890

# 暫時停用群組(不需要修改設定檔)
openclaw telegram groups disable -1001234567890

# 重新啟用
openclaw telegram groups enable -1001234567890

# 查看群組的使用統計
openclaw telegram groups stats -1001234567890

群組內的 slash 命令

你可以在 BotFather 設定 bot 支援的命令,然後在群組中使用:

/status - 查看 bot 狀態
/help - 顯示使用說明
/stats - 顯示今日使用統計

在 BotFather 中設定:

/setcommands → 選擇你的 bot → 輸入命令列表
status - 查看 bot 狀態
help - 顯示使用說明
stats - 顯示今日使用統計

常見問題

Bot 加入群組後完全沒反應

確認清單:

  1. 群組 ID 是否正確?(注意負號和長度)
  2. enabled 是否為 true
  3. 如果用 all-messages 策略,BotFather 的隱私模式是否已關閉?
  4. Gateway 是否已重啟?(修改設定後需要重啟)
  5. 日誌中是否有收到訊息的記錄?

Bot 在私聊正常但群組中不回應

最常見的原因是隱私模式。確認你的 groupPolicy 與隱私模式設定一致(見上面的表格)。

Bot 回應了不該回應的訊息

檢查:

  1. groupPolicy 是否設成了 all-messages
  2. requireMention 是否為 false
  3. 是否有其他 bot 的訊息被誤判為 mention

群組 ID 取得後 bot 還是不回應

Telegram 有兩種群組:普通群組和超級群組(supergroup)。當一個普通群組升級為超級群組時,群組 ID 會改變[4]。如果你在升級前取得了 ID,需要重新取得。


不想自己維護?

如果你管理多個 Telegram 群組,每個群組有不同的 Agent 設定和權限需求,維護起來會越來越複雜。ClawTank 提供了圖形化的群組管理介面,可以在瀏覽器中直接設定群組策略、查看使用統計、管理 Agent 分配,不需要手動編輯 JSON 設定檔。


總結

在 Telegram 群組中使用 OpenClaw,核心設定流程是:

  1. 將 bot 加入群組
  2. 從日誌取得群組 ID
  3. openclaw.json 中設定群組參數
  4. 選擇適當的 groupPolicy(推薦 mention-only
  5. 重啟 gateway

進階功能包括:

  • 多 Agent 協作(每個 Agent 用獨立的 Telegram bot)
  • Agent 間的 lobstalk 轉交
  • 精細的 rate limiting 和使用者管理
  • 每個群組的獨立設定

記住一個原則:群組設定寧可保守。先從 mention-only 開始,確認運作正常後再根據需求調整。把 all-messages 留給你確定需要它的場景。


References

  1. Telegram BotFather documentation
  2. OpenClaw lobstalk skill documentation
  3. Telegram Bot API - Privacy mode
  4. Telegram supergroup migration
  5. OpenClaw Telegram integration guide
  6. Telegram Bot API - getUpdates
  7. OpenClaw multi-agent documentation

準備好部署 OpenClaw 了嗎?

不需要 Docker、SSH、DevOps。不到 1 分鐘即可部署。

免費開始使用