Sẵn sàng cho tin nhắn riêng và kênh guild qua Gateway Discord chính thức.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Pairing
Slash commands
Channel troubleshooting
Thiết lập nhanh
Bạn sẽ cần tạo một ứng dụng mới có bot, thêm bot vào máy chủ của bạn và ghép nối bot đó với OpenClaw. Chúng tôi khuyên bạn nên thêm bot vào máy chủ riêng của chính bạn. Nếu chưa có, hãy tạo một máy chủ trước (chọn Create My Own > For me and my friends).Create a Discord application and bot
Enable privileged intents
- Message Content Intent (bắt buộc)
- Server Members Intent (khuyến nghị; bắt buộc cho danh sách vai trò được phép và khớp tên với ID)
- Presence Intent (tùy chọn; chỉ cần cho cập nhật trạng thái hiện diện)
Copy your bot token
Generate an invite URL and add the bot to your server
botapplications.commands
- Xem kênh Text Permissions
- Gửi tin nhắn
- Đọc lịch sử tin nhắn
- Nhúng liên kết
- Đính kèm tệp
- Thêm phản ứng (tùy chọn)
Enable Developer Mode and collect your IDs
- Nhấp User Settings (biểu tượng bánh răng cạnh ảnh đại diện của bạn) → Advanced → bật Developer Mode
- Nhấp chuột phải vào biểu tượng máy chủ của bạn trong thanh bên → Copy Server ID
- Nhấp chuột phải vào ảnh đại diện của chính bạn → Copy User ID
Allow DMs from server members
Set your bot token securely (do not send it in chat)
openclaw gateway run.
Với các bản cài đặt dịch vụ được quản lý, hãy chạy openclaw gateway install từ shell có DISCORD_BOT_TOKEN, hoặc lưu biến trong ~/.openclaw/.env, để dịch vụ có thể phân giải env SecretRef sau khi khởi động lại.Configure OpenClaw and pair
- Ask your agent
- CLI / config
“Tôi đã thiết lập Discord bot token trong cấu hình. Vui lòng hoàn tất thiết lập Discord với User ID<user_id>và Server ID<server_id>.”
Approve first DM pairing
- Ask your agent
- CLI
“Phê duyệt mã ghép nối Discord này: <CODE>”
DISCORD_BOT_TOKEN chỉ được dùng cho tài khoản mặc định.
Nếu hai tài khoản Discord đã bật phân giải tới cùng một bot token, OpenClaw chỉ khởi động một bộ giám sát Gateway cho token đó. Token từ cấu hình thắng dự phòng env mặc định; nếu không, tài khoản đã bật đầu tiên thắng và tài khoản trùng lặp được báo cáo là đã tắt.
Với các lệnh gọi đi nâng cao (hành động công cụ/kênh nhắn tin), token rõ ràng theo từng lệnh gọi được dùng cho lệnh gọi đó. Điều này áp dụng cho các hành động gửi và đọc/thăm dò (ví dụ read/search/fetch/thread/pins/permissions). Thiết lập chính sách tài khoản/thử lại vẫn đến từ tài khoản được chọn trong ảnh chụp runtime đang hoạt động.Khuyến nghị: Thiết lập không gian làm việc guild
Khi tin nhắn riêng đã hoạt động, bạn có thể thiết lập máy chủ Discord của mình thành một không gian làm việc đầy đủ, trong đó mỗi kênh có phiên tác nhân riêng với ngữ cảnh riêng. Cách này được khuyến nghị cho máy chủ riêng chỉ có bạn và bot của bạn.Add your server to the guild allowlist
- Ask your agent
- Config
“Thêm Discord Server ID <server_id> của tôi vào danh sách guild được phép”
Allow responses without @mention
message, để tác nhân có thể theo dõi mặc định và chỉ đăng khi quyết định rằng một phản hồi trong kênh là hữu ích.- Ask your agent
- Config
“Cho phép tác nhân của tôi phản hồi trên máy chủ này mà không cần được @nhắc đến”
Plan for memory in guild channels
- Ask your agent
- Manual
“Khi tôi đặt câu hỏi trong kênh Discord, hãy dùng memory_search hoặc memory_get nếu bạn cần ngữ cảnh dài hạn từ MEMORY.md.”
#coding, #home, #research, hoặc bất kỳ thứ gì phù hợp với quy trình làm việc của bạn.
Mô hình runtime
- Gateway sở hữu kết nối Discord.
- Định tuyến phản hồi là xác định: phản hồi đến từ Discord sẽ quay lại Discord.
- Metadata guild/kênh Discord được thêm vào prompt của mô hình như ngữ cảnh không đáng tin cậy, không phải tiền tố phản hồi hiển thị cho người dùng. Nếu mô hình sao chép phong bì đó trở lại, OpenClaw sẽ loại bỏ metadata đã sao chép khỏi phản hồi đi và khỏi ngữ cảnh phát lại trong tương lai.
- Theo mặc định (
session.dmScope=main), trò chuyện trực tiếp dùng chung phiên chính của tác nhân (agent:main:main). - Kênh guild là các khóa phiên cô lập (
agent:<agentId>:discord:channel:<channelId>). - Tin nhắn riêng nhóm bị bỏ qua theo mặc định (
channels.discord.dm.groupEnabled=false). - Lệnh slash gốc chạy trong các phiên lệnh cô lập (
agent:<agentId>:discord:slash:<userId>), đồng thời vẫn mangCommandTargetSessionKeytới phiên hội thoại được định tuyến. - Việc gửi thông báo cron/Heartbeat chỉ văn bản tới Discord dùng câu trả lời cuối hiển thị cho trợ lý một lần. Payload media và thành phần có cấu trúc vẫn là nhiều tin nhắn khi tác nhân phát ra nhiều payload có thể gửi.
Kênh diễn đàn
Kênh diễn đàn và media của Discord chỉ chấp nhận bài đăng luồng. OpenClaw hỗ trợ hai cách để tạo chúng:- Gửi tin nhắn tới diễn đàn cha (
channel:<forumId>) để tự động tạo luồng. Tiêu đề luồng dùng dòng không rỗng đầu tiên của tin nhắn. - Dùng
openclaw message thread createđể tạo luồng trực tiếp. Không truyền--message-idcho kênh diễn đàn.
channel:<threadId>).
Thành phần tương tác
OpenClaw hỗ trợ các vùng chứa thành phần v2 của Discord cho thông điệp của tác tử. Dùng công cụ thông điệp với payloadcomponents. Kết quả tương tác được định tuyến trở lại tác tử như các thông điệp đến bình thường và tuân theo các thiết lập Discord replyToMode hiện có.
Khối được hỗ trợ:
text,section,separator,actions,media-gallery,file- Hàng hành động cho phép tối đa 5 nút hoặc một menu chọn duy nhất
- Loại chọn:
string,user,role,mentionable,channel
components.reusable=true để cho phép nút, lựa chọn và biểu mẫu được dùng nhiều lần cho đến khi hết hạn.
Để giới hạn người có thể nhấp vào nút, đặt allowedUsers trên nút đó (ID người dùng Discord, thẻ, hoặc *). Khi được cấu hình, người dùng không khớp sẽ nhận một thông báo từ chối tạm thời chỉ họ thấy.
Các lệnh gạch chéo /model và /models mở một bộ chọn mô hình tương tác với danh sách thả xuống nhà cung cấp, mô hình và runtime tương thích, kèm bước Gửi. /models add đã bị phản đối và hiện trả về thông báo phản đối thay vì đăng ký mô hình từ cuộc trò chuyện. Phản hồi của bộ chọn là tạm thời và chỉ người dùng gọi lệnh mới có thể sử dụng.
Tệp đính kèm:
- Khối
filephải trỏ đến một tham chiếu tệp đính kèm (attachment://<filename>) - Cung cấp tệp đính kèm qua
media/path/filePath(một tệp); dùngmedia-gallerycho nhiều tệp - Dùng
filenameđể ghi đè tên tải lên khi tên đó phải khớp với tham chiếu tệp đính kèm
- Thêm
components.modalvới tối đa 5 trường - Loại trường:
text,checkbox,radio,select,role-select,user-select - OpenClaw tự động thêm một nút kích hoạt
Kiểm soát truy cập và định tuyến
- DM policy
- Guild policy
- Mentions and group DMs
channels.discord.dmPolicy kiểm soát quyền truy cập DM. channels.discord.allowFrom là danh sách cho phép DM chính tắc.pairing(mặc định)allowlistopen(yêu cầuchannels.discord.allowFrombao gồm"*")disabled
pairing).Thứ tự ưu tiên nhiều tài khoản:channels.discord.accounts.default.allowFromchỉ áp dụng cho tài khoảndefault.- Với một tài khoản,
allowFromđược ưu tiên hơndm.allowFromcũ. - Tài khoản có tên kế thừa
channels.discord.allowFromkhiallowFromriêng của chúng vàdm.allowFromcũ chưa được đặt. - Tài khoản có tên không kế thừa
channels.discord.accounts.default.allowFrom.
channels.discord.dm.policy và channels.discord.dm.allowFrom cũ vẫn được đọc để tương thích. openclaw doctor --fix di chuyển chúng sang dmPolicy và allowFrom khi có thể làm vậy mà không thay đổi quyền truy cập.Định dạng đích DM để gửi:user:<id>- đề cập
<@id>
allowFrom DM hiệu lực của tài khoản được xử lý như đích DM người dùng để tương thích.Định tuyến tác tử dựa trên vai trò
Dùngbindings[].match.roles để định tuyến thành viên guild Discord đến các tác tử khác nhau theo ID vai trò. Liên kết dựa trên vai trò chỉ chấp nhận ID vai trò và được đánh giá sau liên kết ngang hàng hoặc cha-ngang hàng và trước liên kết chỉ guild. Nếu một liên kết cũng đặt các trường khớp khác (ví dụ peer + guildId + roles), tất cả các trường đã cấu hình phải khớp.
Lệnh native và xác thực lệnh
commands.nativemặc định là"auto"và được bật cho Discord.- Ghi đè theo kênh:
channels.discord.commands.native. commands.native=falsexóa rõ ràng các lệnh native Discord đã đăng ký trước đó.- Xác thực lệnh native dùng cùng danh sách cho phép/chính sách Discord như xử lý thông điệp bình thường.
- Lệnh vẫn có thể hiển thị trong giao diện Discord cho người dùng không được ủy quyền; việc thực thi vẫn áp dụng xác thực OpenClaw và trả về “không được ủy quyền”.
ephemeral: true
Chi tiết tính năng
Reply tags and native replies
Reply tags and native replies
Live stream preview
Live stream preview
channels.discord.streaming nhận off (mặc định) | partial | block | progress. progress ánh xạ sang partial trên Discord; streamMode là bí danh cũ và được tự động di chuyển.Mặc định vẫn là off vì các chỉnh sửa bản xem trước trên Discord nhanh chóng chạm giới hạn tốc độ khi nhiều bot hoặc Gateway dùng chung một tài khoản.partialchỉnh sửa một thông điệp xem trước duy nhất khi token đến.blockphát các đoạn cỡ bản nháp (dùngdraftChunkđể tinh chỉnh kích thước và điểm ngắt, được kẹp theotextChunkLimit).- Kết quả cuối có phương tiện, lỗi và trả lời rõ ràng sẽ hủy các chỉnh sửa xem trước đang chờ.
streaming.preview.toolProgress(mặc địnhtrue) kiểm soát việc cập nhật công cụ/tiến trình có tái sử dụng thông điệp xem trước hay không.
block được bật rõ ràng, OpenClaw bỏ qua stream xem trước để tránh stream hai lần.History, context, and thread behavior
History, context, and thread behavior
channels.discord.historyLimitmặc định20- fallback:
messages.groupChat.historyLimit 0tắt
channels.discord.dmHistoryLimitchannels.discord.dms["<user_id>"].historyLimit
- Thread Discord định tuyến như phiên kênh và kế thừa cấu hình kênh cha trừ khi bị ghi đè.
- Phiên thread kế thừa lựa chọn
/modelcấp phiên của kênh cha như một fallback chỉ mô hình; lựa chọn/modelcục bộ của thread vẫn được ưu tiên và lịch sử bản chép lời của cha không được sao chép trừ khi bật kế thừa bản chép lời. channels.discord.thread.inheritParent(mặc địnhfalse) chọn cho các auto-thread mới được gieo dữ liệu từ bản chép lời cha. Ghi đè theo tài khoản nằm dướichannels.discord.accounts.<id>.thread.inheritParent.- Phản ứng của công cụ thông điệp có thể phân giải đích DM
user:<id>. guilds.<guild>.channels.<channel>.requireMention: falseđược giữ nguyên trong fallback kích hoạt giai đoạn trả lời.
Thread-bound sessions for subagents
Thread-bound sessions for subagents
/focus <target>liên kết thread hiện tại/mới với đích tác tử con/phiên/unfocusgỡ liên kết thread hiện tại/agentshiển thị các lượt chạy đang hoạt động và trạng thái liên kết/session idle <duration|off>kiểm tra/cập nhật tự động bỏ focus do không hoạt động cho các liên kết đã focus/session max-age <duration|off>kiểm tra/cập nhật tuổi tối đa cứng cho các liên kết đã focus
session.threadBindings.*đặt các giá trị mặc định toàn cục.channels.discord.threadBindings.*ghi đè hành vi của Discord.spawnSubagentSessionsphải là true để tự động tạo/liên kết luồng chosessions_spawn({ thread: true }).spawnAcpSessionsphải là true để tự động tạo/liên kết luồng cho ACP (/acp spawn ... --thread ...hoặcsessions_spawn({ runtime: "acp", thread: true })).- Nếu liên kết luồng bị tắt cho một tài khoản,
/focusvà các thao tác liên kết luồng liên quan sẽ không khả dụng.
Persistent ACP channel bindings
Persistent ACP channel bindings
bindings[]vớitype: "acp"vàmatch.channel: "discord"
/acp spawn codex --bind hereliên kết kênh hoặc luồng hiện tại tại chỗ và giữ các tin nhắn trong tương lai trên cùng phiên ACP. Tin nhắn luồng kế thừa liên kết kênh cha.- Trong một kênh hoặc luồng đã liên kết,
/newvà/resetđặt lại cùng phiên ACP tại chỗ. Các liên kết luồng tạm thời có thể ghi đè cách phân giải đích khi đang hoạt động. spawnAcpSessionschỉ bắt buộc khi OpenClaw cần tạo/liên kết một luồng con qua--thread auto|here.
Reaction notifications
Reaction notifications
offown(mặc định)allallowlist(dùngguilds.<id>.users)
Ack reactions
Ack reactions
ackReaction gửi một emoji xác nhận trong khi OpenClaw đang xử lý tin nhắn đến.Thứ tự phân giải:channels.discord.accounts.<accountId>.ackReactionchannels.discord.ackReactionmessages.ackReaction- emoji dự phòng từ danh tính agent (
agents.list[].identity.emoji, nếu không có thì ”👀”)
- Discord chấp nhận emoji unicode hoặc tên emoji tùy chỉnh.
- Dùng
""để tắt phản ứng cho một kênh hoặc tài khoản.
Config writes
Config writes
/config set|unset (khi tính năng lệnh được bật).Tắt:Gateway proxy
Gateway proxy
channels.discord.proxy.PluralKit support
PluralKit support
- allowlist có thể dùng
pk:<memberId> - tên hiển thị của thành viên chỉ được khớp theo tên/slug khi
channels.discord.dangerouslyAllowNameMatching: true - tra cứu dùng ID tin nhắn gốc và bị giới hạn theo cửa sổ thời gian
- nếu tra cứu thất bại, tin nhắn được proxy được coi là tin nhắn bot và bị bỏ qua trừ khi
allowBots=true
Presence configuration
Presence configuration
- 0: Đang chơi
- 1: Đang streaming (yêu cầu
activityUrl) - 2: Đang nghe
- 3: Đang xem
- 4: Tùy chỉnh (dùng văn bản hoạt động làm trạng thái; emoji là tùy chọn)
- 5: Đang thi đấu
autoPresence.healthyTextautoPresence.degradedTextautoPresence.exhaustedText(hỗ trợ placeholder{reason})
Approvals in Discord
Approvals in Discord
channels.discord.execApprovals.enabledchannels.discord.execApprovals.approvers(tùy chọn; dùng lạicommands.ownerAllowFromkhi có thể)channels.discord.execApprovals.target(dm|channel|both, mặc định:dm)agentFilter,sessionFilter,cleanupAfterResolve
enabled chưa được đặt hoặc là "auto" và có thể phân giải ít nhất một người phê duyệt, từ execApprovals.approvers hoặc từ commands.ownerAllowFrom. Discord không suy luận người phê duyệt exec từ allowFrom của kênh, dm.allowFrom cũ, hoặc defaultTo của tin nhắn trực tiếp. Đặt enabled: false để tắt rõ ràng Discord làm client phê duyệt gốc.Đối với các lệnh nhóm nhạy cảm chỉ dành cho chủ sở hữu như /diagnostics và /export-trajectory, OpenClaw gửi lời nhắc phê duyệt và kết quả cuối cùng một cách riêng tư. Trước tiên, OpenClaw thử Discord DM khi chủ sở hữu gọi lệnh có tuyến chủ sở hữu Discord; nếu không khả dụng, OpenClaw dùng tuyến chủ sở hữu khả dụng đầu tiên từ commands.ownerAllowFrom, chẳng hạn Telegram.Khi target là channel hoặc both, lời nhắc phê duyệt sẽ hiển thị trong kênh. Chỉ những người phê duyệt đã được phân giải mới có thể dùng các nút; người dùng khác nhận thông báo từ chối ephemeral. Lời nhắc phê duyệt bao gồm văn bản lệnh, vì vậy chỉ bật gửi qua kênh trong các kênh đáng tin cậy. Nếu không thể suy ra ID kênh từ khóa phiên, OpenClaw dùng lại cách gửi qua DM.Discord cũng hiển thị các nút phê duyệt dùng chung được các kênh chat khác sử dụng. Adapter Discord gốc chủ yếu bổ sung định tuyến DM cho người phê duyệt và phát tán qua kênh.
Khi có các nút đó, chúng là UX phê duyệt chính; OpenClaw
chỉ nên bao gồm lệnh /approve thủ công khi kết quả công cụ cho biết
phê duyệt qua chat không khả dụng hoặc phê duyệt thủ công là đường duy nhất.
Nếu runtime phê duyệt gốc của Discord không hoạt động, OpenClaw giữ
lời nhắc /approve <id> <decision> cục bộ xác định hiển thị. Nếu
runtime đang hoạt động nhưng không thể gửi thẻ gốc tới bất kỳ đích nào,
OpenClaw gửi thông báo dự phòng trong cùng chat với lệnh /approve
chính xác từ phê duyệt đang chờ.Xác thực Gateway và phân giải phê duyệt tuân theo hợp đồng client Gateway dùng chung (ID plugin: phân giải qua plugin.approval.resolve; các ID khác qua exec.approval.resolve). Phê duyệt hết hạn sau 30 phút theo mặc định.Xem Phê duyệt exec.Công cụ và cổng hành động
Các hành động tin nhắn Discord bao gồm nhắn tin, quản trị kênh, kiểm duyệt, presence và hành động metadata. Ví dụ cốt lõi:- nhắn tin:
sendMessage,readMessages,editMessage,deleteMessage,threadReply - phản ứng:
react,reactions,emojiList - kiểm duyệt:
timeout,kick,ban - presence:
setPresence
event-create chấp nhận tham số image tùy chọn (URL hoặc đường dẫn tệp cục bộ) để đặt ảnh bìa sự kiện đã lên lịch.
Các cổng hành động nằm dưới channels.discord.actions.*.
Hành vi cổng mặc định:
| Nhóm hành động | Mặc định |
|---|---|
| reactions, messages, threads, pins, polls, search, memberInfo, roleInfo, channelInfo, channels, voiceStatus, events, stickers, emojiUploads, stickerUploads, permissions | bật |
| roles | tắt |
| moderation | tắt |
| presence | tắt |
Giao diện người dùng components v2
OpenClaw dùng Discord components v2 cho phê duyệt exec và dấu mốc xuyên ngữ cảnh. Các hành động tin nhắn Discord cũng có thể chấp nhậncomponents cho giao diện người dùng tùy chỉnh (nâng cao; yêu cầu xây dựng payload component qua công cụ discord), trong khi embeds cũ vẫn khả dụng nhưng không được khuyến nghị.
channels.discord.ui.components.accentColorđặt màu nhấn dùng bởi các container component của Discord (hex).- Đặt theo từng tài khoản bằng
channels.discord.accounts.<id>.ui.components.accentColor. embedsbị bỏ qua khi có components v2.
Thoại
Discord có hai bề mặt thoại riêng biệt: kênh thoại thời gian thực (cuộc trò chuyện liên tục) và tệp đính kèm tin nhắn thoại (định dạng xem trước dạng sóng). Gateway hỗ trợ cả hai.Kênh thoại
Danh sách kiểm tra thiết lập:- Bật Message Content Intent trong Discord Developer Portal.
- Bật Server Members Intent khi dùng danh sách cho phép theo vai trò/người dùng.
- Mời bot với phạm vi
botvàapplications.commands. - Cấp quyền Connect, Speak, Send Messages và Read Message History trong kênh thoại đích.
- Bật lệnh gốc (
commands.nativehoặcchannels.discord.commands.native). - Cấu hình
channels.discord.voice.
/vc join|leave|status để điều khiển phiên. Lệnh này dùng tác nhân mặc định của tài khoản và tuân theo cùng các quy tắc danh sách cho phép và chính sách nhóm như các lệnh Discord khác.
voice.ttschỉ ghi đèmessages.ttscho phát lại thoại.voice.modelchỉ ghi đè LLM dùng cho phản hồi kênh thoại Discord. Để trống để kế thừa mô hình tác nhân được định tuyến.- STT dùng
tools.media.audio;voice.modelkhông ảnh hưởng đến phiên âm. - Các lượt bản ghi thoại suy ra trạng thái chủ sở hữu từ Discord
allowFrom(hoặcdm.allowFrom); người nói không phải chủ sở hữu không thể truy cập công cụ chỉ dành cho chủ sở hữu (ví dụgatewayvàcron). - Thoại được bật theo mặc định; đặt
channels.discord.voice.enabled=falseđể tắt runtime thoại và intent GatewayGuildVoiceStates. channels.discord.intents.voiceStatescó thể ghi đè rõ ràng đăng ký intent trạng thái thoại. Để trống để intent đi theovoice.enabled.voice.daveEncryptionvàvoice.decryptionFailureToleranceđược chuyển tiếp vào tùy chọn tham gia của@discordjs/voice.- Mặc định của
@discordjs/voicelàdaveEncryption=truevàdecryptionFailureTolerance=24nếu chưa đặt. - OpenClaw cũng theo dõi lỗi giải mã nhận và tự khôi phục bằng cách rời/tham gia lại kênh thoại sau các lỗi lặp lại trong một khoảng thời gian ngắn.
- Nếu nhật ký nhận liên tục hiển thị
DecryptionFailed(UnencryptedWhenPassthroughDisabled)sau khi cập nhật, hãy thu thập báo cáo phụ thuộc và nhật ký. Dòng@discordjs/voiceđi kèm có bản sửa lỗi padding thượng nguồn từ discord.js PR #11449, vốn đã đóng issue discord.js #11419.
- Ghi PCM của Discord được chuyển đổi thành tệp WAV tạm.
tools.media.audioxử lý STT, ví dụopenai/gpt-4o-mini-transcribe.- Bản phiên âm được gửi qua luồng nhận và định tuyến Discord thông thường.
voice.model, khi được đặt, chỉ ghi đè LLM phản hồi cho lượt kênh thoại này.voice.ttsđược hợp nhất đè lênmessages.tts; âm thanh kết quả được phát trong kênh đã tham gia.
voice.model, xác thực STT cho tools.media.audio, và xác thực TTS cho messages.tts/voice.tts.
Tin nhắn thoại
Tin nhắn thoại Discord hiển thị bản xem trước dạng sóng và yêu cầu âm thanh OGG/Opus. OpenClaw tự động tạo dạng sóng, nhưng cầnffmpeg và ffprobe trên máy chủ Gateway để kiểm tra và chuyển đổi.
- Cung cấp đường dẫn tệp cục bộ (URL bị từ chối).
- Bỏ qua nội dung văn bản (Discord từ chối văn bản + tin nhắn thoại trong cùng một payload).
- Chấp nhận mọi định dạng âm thanh; OpenClaw chuyển đổi sang OGG/Opus khi cần.
Khắc phục sự cố
Đã dùng intent không được phép hoặc bot không thấy tin nhắn guild
Đã dùng intent không được phép hoặc bot không thấy tin nhắn guild
- bật Message Content Intent
- bật Server Members Intent khi bạn phụ thuộc vào phân giải người dùng/thành viên
- khởi động lại gateway sau khi thay đổi intent
Tin nhắn guild bị chặn ngoài dự kiến
Tin nhắn guild bị chặn ngoài dự kiến
- xác minh
groupPolicy - xác minh danh sách cho phép guild trong
channels.discord.guilds - nếu bản đồ
channelscủa guild tồn tại, chỉ các kênh được liệt kê mới được phép - xác minh hành vi
requireMentionvà mẫu mention
Đã tắt yêu cầu mention nhưng vẫn bị chặn
Đã tắt yêu cầu mention nhưng vẫn bị chặn
groupPolicy="allowlist"mà không có danh sách cho phép guild/kênh khớprequireMentionđược cấu hình sai chỗ (phải nằm dướichannels.discord.guildshoặc mục kênh)- người gửi bị chặn bởi danh sách cho phép
userscủa guild/kênh
Lượt Discord chạy lâu hoặc phản hồi trùng lặp
Lượt Discord chạy lâu hoặc phản hồi trùng lặp
Slow listener detected ...stuck session: sessionKey=agent:...:discord:... state=processing ...
- một tài khoản:
channels.discord.eventQueue.listenerTimeout - nhiều tài khoản:
channels.discord.accounts.<accountId>.eventQueue.listenerTimeout - mục này chỉ kiểm soát công việc listener Gateway Discord, không phải thời lượng lượt của tác nhân
Cảnh báo timeout tra cứu metadata Gateway
Cảnh báo timeout tra cứu metadata Gateway
/gateway/bot của Discord trước khi kết nối. Lỗi tạm thời sẽ quay về URL Gateway mặc định của Discord và được giới hạn tần suất trong nhật ký.Núm điều chỉnh timeout metadata:- một tài khoản:
channels.discord.gatewayInfoTimeoutMs - nhiều tài khoản:
channels.discord.accounts.<accountId>.gatewayInfoTimeoutMs - fallback env khi cấu hình chưa đặt:
OPENCLAW_DISCORD_GATEWAY_INFO_TIMEOUT_MS - mặc định:
30000(30 giây), tối đa:120000
Sai khác trong kiểm tra quyền
Sai khác trong kiểm tra quyền
channels status --probe chỉ hoạt động với ID kênh dạng số.Nếu bạn dùng khóa slug, khớp runtime vẫn có thể hoạt động, nhưng probe không thể xác minh đầy đủ quyền.Vấn đề DM và ghép đôi
Vấn đề DM và ghép đôi
- DM bị tắt:
channels.discord.dm.enabled=false - chính sách DM bị tắt:
channels.discord.dmPolicy="disabled"(cũ:channels.discord.dm.policy) - đang chờ phê duyệt ghép đôi trong chế độ
pairing
Vòng lặp bot với bot
Vòng lặp bot với bot
channels.discord.allowBots=true, hãy dùng quy tắc mention và danh sách cho phép nghiêm ngặt để tránh hành vi lặp.
Ưu tiên channels.discord.allowBots="mentions" để chỉ chấp nhận tin nhắn bot có mention bot.Voice STT bị rớt với DecryptionFailed(...)
Voice STT bị rớt với DecryptionFailed(...)
- giữ OpenClaw luôn mới (
openclaw update) để có logic khôi phục nhận thoại Discord - xác nhận
channels.discord.voice.daveEncryption=true(mặc định) - bắt đầu từ
channels.discord.voice.decryptionFailureTolerance=24(mặc định thượng nguồn) và chỉ tinh chỉnh khi cần - theo dõi nhật ký cho:
discord voice: DAVE decrypt failures detecteddiscord voice: repeated decrypt failures; attempting rejoin
- nếu lỗi tiếp diễn sau khi tự động tham gia lại, hãy thu thập nhật ký và so sánh với lịch sử nhận DAVE thượng nguồn trong discord.js #11419 và discord.js #11449
Tham chiếu cấu hình
Tham chiếu chính: Tham chiếu cấu hình - Discord.Các trường Discord tín hiệu cao
Các trường Discord tín hiệu cao
- khởi động/xác thực:
enabled,token,accounts.*,allowBots - chính sách:
groupPolicy,dm.*,guilds.*,guilds.*.channels.* - lệnh:
commands.native,commands.useAccessGroups,configWrites,slashCommand.* - hàng đợi sự kiện:
eventQueue.listenerTimeout(ngân sách listener),eventQueue.maxQueueSize,eventQueue.maxConcurrency - metadata Gateway:
gatewayInfoTimeoutMs - phản hồi/lịch sử:
replyToMode,historyLimit,dmHistoryLimit,dms.*.historyLimit - gửi:
textChunkLimit,chunkMode,maxLinesPerMessage - streaming:
streaming(bí danh cũ:streamMode),streaming.preview.toolProgress,draftChunk,blockStreaming,blockStreamingCoalesce - media/thử lại:
mediaMaxMb(giới hạn tải lên Discord đi ra, mặc định100MB),retry - hành động:
actions.* - hiện diện:
activity,status,activityType,activityUrl - UI:
ui.components.accentColor - tính năng:
threadBindings, cấp cao nhấtbindings[](type: "acp"),pluralkit,execApprovals,intents,agentComponents,heartbeat,responsePrefix
An toàn và vận hành
- Xem token bot là bí mật (ưu tiên
DISCORD_BOT_TOKENtrong môi trường được giám sát). - Cấp quyền Discord theo đặc quyền tối thiểu.
- Nếu triển khai/trạng thái lệnh đã cũ, hãy khởi động lại gateway và kiểm tra lại bằng
openclaw channels status --probe.