OpenClaw Discord 頻道
透過 discord.js Bot Gateway API 將 OpenClaw 連接到 Discord。在 Discord 開發者入口建立機器人,啟用所需的 Intent 權限,邀請機器人到您的伺服器,AI 助手即可在 Discord 上運行。支援私訊、伺服器頻道對話、表情回應、討論串、斜線命令和富媒體。是最容易設定的頻道之一。
Discord 支援功能
文字訊息
支援
媒體與檔案
支援
表情回應
支援
討論串
支援
語音訊息
不支援
群組聊天
支援
Discord 前置條件
- 擁有 Discord 開發者入口存取權限的 Discord 帳號
- Discord 開發者入口的 Bot Token(Applications → New Application → Bot)
- 在 Privileged Gateway Intents 中啟用 Message Content Intent
- OpenClaw Gateway 已執行並完成設定
Discord 快速設定
建立 Discord 機器人並啟用 Intent
前往 Discord 開發者入口(discord.com/developers),建立新應用程式,新增 Bot 使用者並複製 Bot Token。在 Privileged Gateway Intents 中,啟用 'Message Content Intent'(必要)和 'Server Members Intent'(建議用於成員查詢)。
新增 Discord 頻道設定
在 ~/.openclaw/openclaw.json 中新增 Discord 頻道設定。設定 token(或使用 DISCORD_BOT_TOKEN 環境變數),並設定 dm.policy 來控制誰可以私訊機器人。
邀請機器人到伺服器並測試
在開發者入口中,前往 OAuth2 → URL Generator。選擇 scopes 'bot' 和 'applications.commands'。選擇權限:View Channels、Send Messages、Read Message History、Embed Links、Attach Files、Add Reactions。開啟產生的 URL 邀請機器人到您的伺服器。傳送 '@機器人名稱 hello' 進行測試。
Discord 設定範例
{
"channels": {
"discord": {
"enabled": true,
"token": "YOUR_DISCORD_BOT_TOKEN",
"dm": {
"policy": "pairing"
}
}
}
}Discord 深入了解
架構概述
建立您的機器人
私訊策略
{
"channels": {
"discord": {
"dm": {
"policy": "pairing",
"allowFrom": ["123456789012345678"]
}
}
}
}伺服器頻道設定
{
"channels": {
"discord": {
"groupPolicy": "open",
"guilds": {
"YOUR_GUILD_ID": {
"slug": "my-server",
"requireMention": true,
"channels": {
"CHANNEL_ID": {
"allow": true,
"requireMention": false,
"systemPrompt": "You are a helpful assistant in this channel."
}
}
}
}
}
}
}表情回應與訊息確認
{
"channels": {
"discord": {
"messages": {
"ackReaction": "👀",
"removeAckAfterReply": true
},
"guilds": {
"GUILD_ID": {
"reactionNotifications": "own"
}
}
}
}
}訊息格式與分塊
{
"channels": {
"discord": {
"textChunkLimit": 2000,
"chunkMode": "newline",
"historyLimit": 20
}
}
}斜線命令與工具操作
媒體與檔案處理
PluralKit 整合
{
"channels": {
"discord": {
"pluralkit": {
"enabled": true,
"token": "pk_live_..."
}
}
}
}執行審核(按鈕 UI)
{
"channels": {
"discord": {
"execApprovals": {
"enabled": true,
"approvers": ["USER_ID_1", "USER_ID_2"],
"agentFilter": [],
"sessionFilter": []
}
}
}
}操作權限閘控
白名單解析與比對
Discord 設定參考
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | 啟用或停用 Discord 頻道 |
| token | string | "" | Discord Bot Token。也可使用 DISCORD_BOT_TOKEN 環境變數 |
| dm.policy | string | "pairing" | 控制誰可以私訊機器人。選項:pairing、allowlist、open、disabled |
| dm.allowFrom | string[] | [] | 允許私訊機器人的 Discord 使用者 ID(當 dm.policy 為 allowlist 時) |
| groupPolicy | string | "allowlist" | 伺服器頻道處理策略。選項:open、disabled、allowlist |
| guilds | object | {} | 按伺服器 ID 索引的每伺服器設定。包含 slug、users、channels、requireMention 等 |
| requireMention | boolean | true | 機器人在伺服器頻道中是否需要 @提及 才回覆 |
| messages.ackReaction | string | "" | 處理訊息時用於確認的表情回應 |
| messages.removeAckAfterReply | boolean | false | AI 回覆後是否移除確認表情回應 |
| textChunkLimit | number | 2000 | 每個訊息塊的最大字元數(Discord 限制為 2000) |
| chunkMode | string | "length" | 長回覆的分割方式。選項:length(硬字元限制)、newline(按段落分割) |
| historyLimit | number | 20 | 作為 AI 上下文包含的最近伺服器訊息數量 |
| mediaMaxMb | number | 8 | 媒體檔案上傳的最大大小(MB) |
| replyToMode | string | "off" | 回覆討論串模式。選項:off、first(僅首個塊作為回覆)、all(所有塊都作為回覆) |
| configWrites | boolean | true | 允許透過 Discord /config set|unset 命令發起的設定更新 |
| allowBots | boolean | false | 是否處理其他機器人的訊息。請謹慎使用以避免迴圈 |
| retry.attempts | number | 3 | Discord API 呼叫失敗時的重試次數 |
| retry.minDelayMs | number | 500 | 重試之間的最小延遲毫秒數 |
| retry.maxDelayMs | number | 30000 | 重試之間的最大延遲毫秒數 |
| retry.jitter | number | 0.1 | 套用於重試延遲的抖動因子 |
| dm.enabled | boolean | true | 是否接受私訊 |
| dm.groupEnabled | boolean | false | 啟用群組私訊處理 |
| dm.groupChannels | string[] | [] | 群組私訊頻道白名單 |
| dmHistoryLimit | number | - | 每使用者私訊歷史記錄限制覆寫 |
| maxLinesPerMessage | number | 17 | 每則訊息塊的軟行數限制 |
| commands.native | string | boolean | "auto" | 原生斜線命令註冊。選項:auto(Discord 預設啟用)、true、false |
| commands.text | object | {} | 文字命令設定,要求獨立的 /... 訊息 |
| commands.useAccessGroups | boolean | false | 是否對命令執行存取群組檢查 |
| actions.* | boolean | varies | 工具操作權限閘控。大部分預設啟用;roles、moderation 和 presence 預設停用 |
| pluralkit.enabled | boolean | false | 啟用 PluralKit 代理訊息解析 |
啟用或停用 Discord 頻道
Discord Bot Token。也可使用 DISCORD_BOT_TOKEN 環境變數
控制誰可以私訊機器人。選項:pairing、allowlist、open、disabled
允許私訊機器人的 Discord 使用者 ID(當 dm.policy 為 allowlist 時)
伺服器頻道處理策略。選項:open、disabled、allowlist
按伺服器 ID 索引的每伺服器設定。包含 slug、users、channels、requireMention 等
機器人在伺服器頻道中是否需要 @提及 才回覆
處理訊息時用於確認的表情回應
AI 回覆後是否移除確認表情回應
每個訊息塊的最大字元數(Discord 限制為 2000)
長回覆的分割方式。選項:length(硬字元限制)、newline(按段落分割)
作為 AI 上下文包含的最近伺服器訊息數量
媒體檔案上傳的最大大小(MB)
回覆討論串模式。選項:off、first(僅首個塊作為回覆)、all(所有塊都作為回覆)
允許透過 Discord /config set|unset 命令發起的設定更新
是否處理其他機器人的訊息。請謹慎使用以避免迴圈
Discord API 呼叫失敗時的重試次數
重試之間的最小延遲毫秒數
重試之間的最大延遲毫秒數
套用於重試延遲的抖動因子
是否接受私訊
啟用群組私訊處理
群組私訊頻道白名單
每使用者私訊歷史記錄限制覆寫
每則訊息塊的軟行數限制
原生斜線命令註冊。選項:auto(Discord 預設啟用)、true、false
文字命令設定,要求獨立的 /... 訊息
是否對命令執行存取群組檢查
工具操作權限閘控。大部分預設啟用;roles、moderation 和 presence 預設停用
啟用 PluralKit 代理訊息解析
Discord 常見問題
Discord 故障排除
Message Content Intent 未啟用、機器人缺少頻道權限,或提及要求設定不正確。
設定中可能停用了私訊處理,或配對審核仍在等待中。
機器人的 OAuth2 邀請 URL 中未包含 'applications.commands' scope。
觸發了 Discord API 速率限制,或閘道連線處於異常狀態。
groupPolicy 預設值為 'allowlist',機器人只在明確設定的伺服器/頻道中回應。
execApprovals 未啟用,或使用者的 Discord ID 未列在 approvers 陣列中。