Discord (Bot API)¶
स्थिति: आधिकारिक Discord बॉट गेटवे के माध्यम से DM और guild टेक्स्ट चैनलों के लिए तैयार।
त्वरित सेटअप (शुरुआती)¶
- एक Discord बॉट बनाएँ और बॉट टोकन कॉपी करें।
- Discord ऐप सेटिंग्स में Message Content Intent सक्षम करें (और यदि आप allowlist या नाम लुकअप का उपयोग करने की योजना बनाते हैं तो Server Members Intent भी)।
- OpenClaw के लिए टोकन सेट करें:
- Env:
DISCORD_BOT_TOKEN=...- या config:channels.discord.token: "..."। - यदि दोनों सेट हैं, तो config को प्राथमिकता मिलती है (env fallback केवल default-account के लिए है)। - संदेश अनुमतियों के साथ बॉट को अपने सर्वर में आमंत्रित करें (यदि आपको केवल DMs चाहिए तो एक निजी सर्वर बनाएँ)।
- Gateway शुरू करें।
- DM एक्सेस डिफ़ॉल्ट रूप से pairing है; पहले संपर्क पर pairing कोड को अनुमोदित करें।
न्यूनतम config:
{
channels: {
discord: {
enabled: true,
token: "YOUR_BOT_TOKEN",
},
},
}
लक्ष्य¶
- Discord DMs या guild चैनलों के माध्यम से OpenClaw से बात करना।
- डायरेक्ट चैट्स एजेंट के मुख्य सत्र में विलय हो जाती हैं (डिफ़ॉल्ट
agent:main:main); guild चैनलagent:<agentId>:discord:channel:<channelId>के रूप में अलग रहते हैं (डिस्प्ले नामdiscord:<guildSlug>#<channelSlug>का उपयोग करते हैं)। - Group DMs डिफ़ॉल्ट रूप से अनदेखी की जाती हैं;
channels.discord.dm.groupEnabledके माध्यम से सक्षम करें और वैकल्पिक रूप सेchannels.discord.dm.groupChannelsद्वारा सीमित करें। - रूटिंग को निर्धारक रखें: उत्तर हमेशा उसी चैनल पर लौटते हैं जहाँ से वे आए थे।
यह कैसे काम करता है¶
- एक Discord एप्लिकेशन → Bot बनाएँ, आवश्यक intents (DMs + guild संदेश + message content) सक्षम करें, और बॉट टोकन प्राप्त करें।
- जहाँ आप इसका उपयोग करना चाहते हैं वहाँ संदेश पढ़ने/भेजने की आवश्यक अनुमतियों के साथ बॉट को अपने सर्वर में आमंत्रित करें।
- OpenClaw को
channels.discord.tokenके साथ कॉन्फ़िगर करें (या fallback के रूप मेंDISCORD_BOT_TOKEN)। - Gateway चलाएँ; जब टोकन उपलब्ध होता है (पहले config, env fallback) और
channels.discord.enabledfalseनहीं होता, तो यह Discord चैनल को स्वतः शुरू कर देता है। - यदि आप env vars पसंद करते हैं, तोDISCORD_BOT_TOKENसेट करें (config ब्लॉक वैकल्पिक है)। - डायरेक्ट चैट्स: डिलीवरी के समय
user:<id>(या<@id>mention) का उपयोग करें; सभी टर्न साझाmainसेशन में जाते हैं। केवल संख्यात्मक IDs अस्पष्ट होते हैं और अस्वीकृत कर दिए जाते हैं। - गिल्ड चैनल्स: डिलीवरी के लिए
channel:<channelId>का उपयोग करें। डिफ़ॉल्ट रूप से mentions आवश्यक होते हैं और इन्हें प्रति गिल्ड या प्रति चैनल सेट किया जा सकता है। - डायरेक्ट चैट्स:
channels.discord.dm.policyके माध्यम से डिफ़ॉल्ट रूप से सुरक्षित (डिफ़ॉल्ट:"pairing")। अज्ञात प्रेषकों को एक pairing कोड मिलता है (1 घंटे बाद समाप्त);openclaw pairing approve discord <code>के माध्यम से अनुमोदित करें। - पुराने “किसी के लिए भी खुला” व्यवहार को बनाए रखने के लिए:channels.discord.dm.policy="open"औरchannels.discord.dm.allowFrom=["*"]सेट करें। - हार्ड allowlist के लिए:channels.discord.dm.policy="allowlist"सेट करें औरchannels.discord.dm.allowFromमें प्रेषकों की सूची दें। - सभी DMs को अनदेखा करने के लिए:channels.discord.dm.enabled=falseयाchannels.discord.dm.policy="disabled"सेट करें। - Group DMs डिफ़ॉल्ट रूप से अनदेखी की जाती हैं;
channels.discord.dm.groupEnabledके माध्यम से सक्षम करें और वैकल्पिक रूप सेchannels.discord.dm.groupChannelsद्वारा सीमित करें। - वैकल्पिक guild नियम:
channels.discord.guildsको guild id (पसंदीदा) या slug द्वारा कुंजीबद्ध सेट करें, प्रति-चैनल नियमों के साथ। - वैकल्पिक नेटिव कमांड्स:
commands.nativeका डिफ़ॉल्ट"auto"है (Discord/Telegram के लिए चालू, Slack के लिए बंद)।channels.discord.commands.native: true|false|"auto"से ओवरराइड करें;falseपहले से पंजीकृत कमांड्स को साफ़ कर देता है। टेक्स्ट कमांड्सcommands.textद्वारा नियंत्रित होते हैं और इन्हें स्वतंत्र/...संदेशों के रूप में भेजना आवश्यक है। कमांड्स के लिए access‑group जाँच को बायपास करने हेतुcommands.useAccessGroups: falseका उपयोग करें।- पूर्ण command सूची + config: Slash commands
- वैकल्पिक गिल्ड संदर्भ इतिहास: mention के उत्तर देते समय संदर्भ के रूप में पिछले N गिल्ड संदेश शामिल करने के लिए
channels.discord.historyLimit(डिफ़ॉल्ट 20,messages.groupChat.historyLimitपर फ़ॉलबैक) सेट करें। अक्षम करने के लिए0सेट करें। - Reactions: एजेंट
discordटूल के माध्यम से reactions ट्रिगर कर सकता है (channels.discord.actions.*द्वारा gated)।- Reaction removal semantics: /tools/reactions देखें।
discordटूल केवल तब उपलब्ध होता है जब वर्तमान चैनल Discord हो।
- Native commands साझा
mainसत्र के बजाय पृथक सत्र कुंजियाँ (agent:<agentId>:discord:slash:<userId>) उपयोग करते हैं।
नोट: नाम → id रिज़ॉल्यूशन गिल्ड सदस्य खोज का उपयोग करता है और Server Members Intent की आवश्यकता होती है; यदि बॉट सदस्य खोज नहीं कर सकता, तो ids या <@id> mentions का उपयोग करें।
नोट: स्लग्स लोअरकेस होते हैं और स्पेस को - से बदला जाता है। चैनल नामों को अग्रणी # के बिना स्लग किया जाता है।
नोट: गिल्ड संदर्भ [from:] पंक्तियों में ping‑ready उत्तरों को आसान बनाने के लिए author.tag + id शामिल होता है।
Config writes¶
डिफ़ॉल्ट रूप से, Discord को /config set|unset द्वारा ट्रिगर किए गए config अपडेट लिखने की अनुमति है (इसके लिए commands.config: true आवश्यक है)।
अक्षम करने के लिए:
{
channels: { discord: { configWrites: false } },
}
अपना स्वयं का बॉट कैसे बनाएँ¶
यह सर्वर (guild) चैनल जैसे #help में OpenClaw चलाने के लिए “Discord Developer Portal” सेटअप है।
1. Discord ऐप + बॉट उपयोगकर्ता बनाएँ¶
- Discord Developer Portal → Applications → New Application
- अपने ऐप में:
- Bot → Add Bot
- Bot Token कॉपी करें (यही
DISCORD_BOT_TOKENमें डालते हैं)
2) OpenClaw को जिन gateway intents की आवश्यकता है, उन्हें सक्षम करें¶
Discord “privileged intents” को तब तक ब्लॉक करता है जब तक आप उन्हें स्पष्ट रूप से सक्षम न करें।
Bot → Privileged Gateway Intents में सक्षम करें:
- Message Content Intent (अधिकांश guilds में संदेश पाठ पढ़ने के लिए आवश्यक; इसके बिना आपको “Used disallowed intents” दिखेगा या बॉट कनेक्ट होगा लेकिन संदेशों पर प्रतिक्रिया नहीं देगा)
- Server Members Intent (अनुशंसित; कुछ सदस्य/उपयोगकर्ता लुकअप और guilds में allowlist मिलान के लिए आवश्यक)
आमतौर पर आपको Presence Intent की आवश्यकता नहीं होती। बॉट की अपनी उपस्थिति सेट करना (setPresence एक्शन) gateway OP3 का उपयोग करता है और इस intent की आवश्यकता नहीं होती; यह केवल तब आवश्यक है जब आप अन्य गिल्ड सदस्यों के presence अपडेट प्राप्त करना चाहते हैं।
3. Invite URL बनाएँ (OAuth2 URL Generator)¶
अपने ऐप में: OAuth2 → URL Generator
Scopes
- ✅
bot - ✅
applications.commands(native commands के लिए आवश्यक)
Bot Permissions (न्यूनतम आधार)
- ✅ View Channels
- ✅ Send Messages
- ✅ Read Message History
- ✅ Embed Links
- ✅ Attach Files
- ✅ Add Reactions (वैकल्पिक लेकिन अनुशंसित)
- ✅ Use External Emojis / Stickers (वैकल्पिक; केवल यदि आप इन्हें चाहते हैं)
डिबगिंग के अलावा Administrator से बचें और केवल तभी उपयोग करें जब आप बॉट पर पूर्ण विश्वास करते हों।
जनरेट किया गया URL कॉपी करें, उसे खोलें, अपना सर्वर चुनें और बॉट इंस्टॉल करें।
4. ids प्राप्त करें (guild/user/channel)¶
Discord हर जगह संख्यात्मक ids का उपयोग करता है; OpenClaw config ids को प्राथमिकता देता है।
- Discord (डेस्कटॉप/वेब) → User Settings → Advanced → Developer Mode सक्षम करें
- राइट-क्लिक:
- सर्वर नाम → Copy Server ID (guild id)
- चैनल (जैसे
#help) → Copy Channel ID - आपका उपयोगकर्ता → Copy User ID
5) OpenClaw कॉन्फ़िगर करें¶
Token¶
env var के माध्यम से बॉट टोकन सेट करें (सर्वरों पर अनुशंसित):
DISCORD_BOT_TOKEN=...
या config के माध्यम से:
{
channels: {
discord: {
enabled: true,
token: "YOUR_BOT_TOKEN",
},
},
}
मल्टी-अकाउंट समर्थन: प्रति-अकाउंट टोकन और वैकल्पिक name के साथ channels.discord.accounts का उपयोग करें। gateway/configuration में साझा पैटर्न देखें।
Allowlist + चैनल रूटिंग¶
उदाहरण “एकल सर्वर, केवल मुझे अनुमति, केवल #help की अनुमति”:
{
channels: {
discord: {
enabled: true,
dm: { enabled: false },
guilds: {
YOUR_GUILD_ID: {
users: ["YOUR_USER_ID"],
requireMention: true,
channels: {
help: { allow: true, requireMention: true },
},
},
},
retry: {
attempts: 3,
minDelayMs: 500,
maxDelayMs: 30000,
jitter: 0.1,
},
},
},
}
नोट्स:
requireMention: trueका अर्थ है कि बॉट केवल mention होने पर उत्तर देता है (साझा चैनलों के लिए अनुशंसित)।agents.list[].groupChat.mentionPatterns(याmessages.groupChat.mentionPatterns) guild संदेशों के लिए mentions के रूप में भी गिने जाते हैं।- मल्टी-एजेंट ओवरराइड:
agents.list[].groupChat.mentionPatternsपर प्रति-एजेंट पैटर्न सेट करें। - यदि
channelsमौजूद है, तो सूचीबद्ध न किए गए किसी भी चैनल को डिफ़ॉल्ट रूप से अस्वीकार किया जाता है। - सभी चैनलों में डिफ़ॉल्ट लागू करने के लिए
"*"चैनल एंट्री का उपयोग करें; स्पष्ट चैनल एंट्रीज़ wildcard को ओवरराइड करती हैं। - थ्रेड्स पैरेंट चैनल कॉन्फ़िगरेशन (allowlist,
requireMention, skills, prompts, आदि) को इनहेरिट करते हैं जब तक आप थ्रेड चैनल id को स्पष्ट रूप से नहीं जोड़ते। - Owner संकेत: जब प्रति‑गिल्ड या प्रति‑चैनल
usersallowlist प्रेषक से मेल खाती है, तो OpenClaw सिस्टम प्रॉम्प्ट में उस प्रेषक को owner मानता है। चैनलों के पार एक ग्लोबल owner के लिए,commands.ownerAllowFromसेट करें। - बॉट-लेखित संदेश डिफ़ॉल्ट रूप से अनदेखे किए जाते हैं; उन्हें अनुमति देने के लिए
channels.discord.allowBots=trueसेट करें (अपने स्वयं के संदेश फ़िल्टर रहते हैं)। - चेतावनी: यदि आप अन्य बॉट्स को उत्तर देने की अनुमति देते हैं (
channels.discord.allowBots=true), तोrequireMention,channels.discord.guilds.*.channels.<id> .usersallowlists, और/याAGENTS.mdऔरSOUL.mdमें guardrails को साफ़ करके बॉट‑टू‑बॉट उत्तर लूप्स को रोकें।channels.discord.groupPolicyका डिफ़ॉल्ट allowlist है; इसे"open"पर सेट करें याchannels.discord.guildsके अंतर्गत एक गिल्ड एंट्री जोड़ें (वैकल्पिक रूप सेchannels.discord.guilds.<id> .channelsके अंतर्गत चैनल सूचीबद्ध करके प्रतिबंधित करें)।
6. सत्यापित करें कि यह काम करता है¶
- Gateway शुरू करें।
- अपने सर्वर चैनल में भेजें:
@Krill hello(या आपके बॉट का जो भी नाम हो)। - यदि कुछ नहीं होता: नीचे Troubleshooting देखें।
समस्या-निवारण¶
- पहले:
openclaw doctorऔरopenclaw channels status --probeचलाएँ (कार्यान्वयन योग्य चेतावनियाँ + त्वरित ऑडिट)। - “Used disallowed intents”: Developer Portal में Message Content Intent (और संभवतः Server Members Intent) सक्षम करें, फिर Gateway रीस्टार्ट करें।
- बॉट कनेक्ट होता है लेकिन guild चैनल में कभी उत्तर नहीं देता:
- Message Content Intent अनुपस्थित है, या
- बॉट के पास चैनल अनुमतियाँ नहीं हैं (View/Send/Read History), या
- आपके config में mentions आवश्यक हैं और आपने mention नहीं किया, या
- आपका guild/channel allowlist चैनल/उपयोगकर्ता को अस्वीकार करता है।
requireMention: falseलेकिन फिर भी कोई उत्तर नहीं:- यदि आप केवल
DISCORD_BOT_TOKENसेट करते हैं और कभीchannels.discordसेक्शन नहीं बनाते, तो रनटाइमgroupPolicyकोopenपर डिफ़ॉल्ट कर देता है।इसे लॉक डाउन करने के लिएchannels.discord.groupPolicy,channels.defaults.groupPolicy, या किसी गिल्ड/चैनल allowlist को जोड़ें। requireMentionकोchannels.discord.guilds(या किसी विशिष्ट चैनल) के अंतर्गत होना चाहिए।channels.discord.requireMentionको टॉप‑लेवल पर अनदेखा कर दिया जाता है।requireMentionmust live underchannels.discord.guilds(or a specific channel).channels.discord.requireMentionat the top level is ignored.-
- Permission audits (
channels status --probe) केवल संख्यात्मक चैनल IDs की जाँच करते हैं। 2. यदि आप slugs/names कोchannels.discord.guilds.*.channelskeys के रूप में उपयोग करते हैं, तो audit permissions को सत्यापित नहीं कर सकता।
- Permission audits (
- DMs काम नहीं करते:
channels.discord.dm.enabled=false,channels.discord.dm.policy="disabled", या आपको अभी तक अनुमोदित नहीं किया गया है (channels.discord.dm.policy="pairing")। -
- Discord में Exec approvals: Discord DMs में exec approvals के लिए button UI को सपोर्ट करता है (Allow once / Always allow / Deny)। 4.
/approve <id> ...केवल forwarded approvals के लिए है और Discord के button prompts को resolve नहीं करेगा। 5. यदि आपको❌ Failed to submit approval: Error: unknown approval idदिखे या UI कभी दिखाई न दे, तो जाँचें:
- Discord में Exec approvals: Discord DMs में exec approvals के लिए button UI को सपोर्ट करता है (Allow once / Always allow / Deny)। 4.
- आपके config में
channels.discord.execApprovals.enabled: true। - आपका Discord user ID
channels.discord.execApprovals.approversमें सूचीबद्ध है (UI केवल approvers को भेजी जाती है)। - DM prompt में बटनों का उपयोग करें (Allow once, Always allow, Deny)।
- व्यापक approvals और command flow के लिए Exec approvals और Slash commands देखें।
क्षमताएँ और सीमाएँ¶
- DMs और guild टेक्स्ट चैनल (threads को अलग चैनलों के रूप में माना जाता है; voice समर्थित नहीं)।
- Typing indicators best-effort भेजे जाते हैं; संदेश chunking
channels.discord.textChunkLimit(डिफ़ॉल्ट 2000) का उपयोग करता है और लंबे उत्तरों को पंक्ति संख्या (channels.discord.maxLinesPerMessage, डिफ़ॉल्ट 17) के अनुसार विभाजित करता है। - वैकल्पिक newline chunking: लंबाई chunking से पहले खाली पंक्तियों (paragraph boundaries) पर विभाजन के लिए
channels.discord.chunkMode="newline"सेट करें। - फ़ाइल अपलोड्स कॉन्फ़िगर किए गए
channels.discord.mediaMaxMb(डिफ़ॉल्ट 8 MB) तक समर्थित हैं। - शोर से बचने के लिए डिफ़ॉल्ट रूप से mention-gated guild replies।
- जब कोई संदेश किसी अन्य संदेश को संदर्भित करता है, तो reply context इंजेक्ट किया जाता है (quoted content + ids)।
- Native reply threading डिफ़ॉल्ट रूप से बंद है;
channels.discord.replyToModeऔर reply tags के साथ सक्षम करें।
Retry policy¶
- Outbound Discord API calls rate limits (429) पर Discord के
retry_after(जब उपलब्ध हो) का उपयोग करते हुए, exponential backoff और jitter के साथ retry होती हैं। 7.channels.discord.retryके माध्यम से कॉन्फ़िगर करें। 8. देखें Retry policy।
Config¶
{
channels: {
discord: {
enabled: true,
token: "abc.123",
groupPolicy: "allowlist",
guilds: {
"*": {
channels: {
general: { allow: true },
},
},
},
mediaMaxMb: 8,
actions: {
reactions: true,
stickers: true,
emojiUploads: true,
stickerUploads: true,
polls: true,
permissions: true,
messages: true,
threads: true,
pins: true,
search: true,
memberInfo: true,
roleInfo: true,
roles: false,
channelInfo: true,
channels: true,
voiceStatus: true,
events: true,
moderation: false,
presence: false,
},
replyToMode: "off",
dm: {
enabled: true,
policy: "pairing", // pairing | allowlist | open | disabled
allowFrom: ["123456789012345678", "steipete"],
groupEnabled: false,
groupChannels: ["openclaw-dm"],
},
guilds: {
"*": { requireMention: true },
"123456789012345678": {
slug: "friends-of-openclaw",
requireMention: false,
reactionNotifications: "own",
users: ["987654321098765432", "steipete"],
channels: {
general: { allow: true },
help: {
allow: true,
requireMention: true,
users: ["987654321098765432"],
skills: ["search", "docs"],
systemPrompt: "Keep answers short.",
},
},
},
},
},
},
}
- Ack reactions को वैश्विक रूप से
messages.ackReaction+messages.ackReactionScopeद्वारा नियंत्रित किया जाता है। 10. बॉट के reply करने के बाद ack reaction हटाने के लिएmessages.removeAckAfterReplyका उपयोग करें।
dm.enabled: सभी DMs को अनदेखा करने के लिएfalseसेट करें (डिफ़ॉल्टtrue)।-
dm.policy: DM access control (pairingअनुशंसित)। 12."open"के लिएdm.allowFrom=["*"]आवश्यक है।
-
dm.allowFrom: DM allowlist (user ids या names)। 14.dm.policy="allowlist"द्वारा उपयोग किया जाता है औरdm.policy="open"की validation के लिए। 15. wizard usernames स्वीकार करता है और जब bot members को खोज सकता है तब उन्हें ids में resolve करता है।
dm.groupEnabled: group DMs सक्षम करें (डिफ़ॉल्टfalse)।dm.groupChannels: group DM channel ids या slugs के लिए वैकल्पिक allowlist।groupPolicy: guild चैनल हैंडलिंग नियंत्रित करता है (open|disabled|allowlist);allowlistके लिए चैनल allowlists आवश्यक हैं।guilds: प्रति-guild नियम, guild id (पसंदीदा) या slug द्वारा कुंजीबद्ध।guilds."*": डिफ़ॉल्ट प्रति-guild सेटिंग्स, जब कोई स्पष्ट एंट्री मौजूद न हो।-
- `guilds.
- .slug
: display names के लिए वैकल्पिक friendly slug।18.guilds. - .users`: वैकल्पिक per-guild user allowlist (ids या names)।
- `guilds.
-
- `guilds.
- .tools
: वैकल्पिक per-guild tool policy overrides (allow/deny/alsoAllow), जब channel override गायब हो तब उपयोग किया जाता है।22.guilds. - .toolsBySender
: guild स्तर पर वैकल्पिक per-sender tool policy overrides (जब channel override गायब हो;"*"` wildcard समर्थित)।
- `guilds.
-
- `guilds.
- .channels.
- .allow
: जबgroupPolicy="allowlist"हो तब चैनल को allow/deny करें।27.guilds. - .channels.
- .requireMention`: चैनल के लिए mention gating।
- `guilds.
-
- `guilds.
- .channels.
- .tools
: वैकल्पिक per-channel tool policy overrides (allow/deny/alsoAllow)।33.guilds. - .channels.
- .toolsBySender
: चैनल के भीतर वैकल्पिक per-sender tool policy overrides ("*"` wildcard समर्थित)।
- `guilds.
-
- `guilds.
- .channels.
- .users
: वैकल्पिक per-channel user allowlist।39.guilds. - .channels.
- .skills
: skill filter (omit = सभी skills, empty = कोई नहीं)।40.guilds. - .channels.
- .systemPrompt`: चैनल के लिए अतिरिक्त system prompt।
- `guilds.
-
- Discord channel topics को untrusted context के रूप में inject किया जाता है (system prompt नहीं)।42. `guilds.
- .channels.
- .enabled
: चैनल को disable करने के लिएfalseसेट करें।43.guilds. - .channels`: चैनल नियम (keys चैनल slugs या ids होते हैं)।
- Discord channel topics को untrusted context के रूप में inject किया जाता है (system prompt नहीं)।42. `guilds.
guilds.<id>.channels.<channel>.tools: optional per-channel tool policy overrides (allow/deny/alsoAllow).guilds.<id>.channels.<channel>.toolsBySender: optional per-sender tool policy overrides within the channel ("*"wildcard supported).guilds.<id>.channels.<channel>.users: optional per-channel user allowlist.guilds.<id>.channels.<channel>.skills: skill filter (omit = all skills, empty = none).guilds.<id>.channels.<channel>.systemPrompt: extra system prompt for the channel. Discord channel topics are injected as untrusted context (not system prompt).guilds.<id>.channels.<channel>.enabled: setfalseto disable the channel.guilds.<id>.channels: channel rules (keys are channel slugs or ids).-
guilds.<id>2..requireMention: प्रति-गिल्ड मेंशन आवश्यकता (प्रति चैनल ओवरराइड की जा सकती है)।
-
guilds.<id>4..reactionNotifications: रिएक्शन सिस्टम इवेंट मोड (off,own,all,allowlist)।
-
textChunkLimit: आउटबाउंड टेक्स्ट चंक आकार (अक्षरों में)। 6. डिफ़ॉल्ट: 2000।
chunkMode:length(डिफ़ॉल्ट) केवलtextChunkLimitसे अधिक होने पर विभाजित करता है;newlineलंबाई chunking से पहले खाली पंक्तियों (paragraph boundaries) पर विभाजित करता है।-
maxLinesPerMessage: प्रति संदेश सॉफ्ट अधिकतम पंक्तियों की संख्या। 8. डिफ़ॉल्ट: 17।
mediaMaxMb: इनबाउंड मीडिया को डिस्क पर सहेजते समय clamp करें।historyLimit: mention के उत्तर में संदर्भ के रूप में शामिल किए जाने वाले हाल के guild संदेशों की संख्या (डिफ़ॉल्ट 20;messages.groupChat.historyLimitपर fallback;0अक्षम करता है)।-
dmHistoryLimit: उपयोगकर्ता टर्न्स में DM इतिहास सीमा। 10. प्रति-उपयोगकर्ता ओवरराइड्स:dms["<user_id>"].historyLimit।
retry: outbound Discord API कॉल्स के लिए retry policy (attempts, minDelayMs, maxDelayMs, jitter)।pluralkit: PluralKit proxied संदेशों को resolve करें ताकि system members अलग-अलग प्रेषक के रूप में दिखाई दें।actions: प्रति-action tool gates; omit करने पर सभी की अनुमति (अक्षम करने के लिएfalseसेट करें)।reactions(react + read reactions को कवर करता है)stickers,emojiUploads,stickerUploads,polls,permissions,messages,threads,pins,searchmemberInfo,roleInfo,channelInfo,voiceStatus,eventschannels(चैनल + श्रेणियाँ + अनुमतियाँ बनाना/संपादित/हटाना)roles(भूमिका जोड़ना/हटाना, डिफ़ॉल्टfalse)moderation(timeout/kick/ban, डिफ़ॉल्टfalse)presence(बॉट स्थिति/गतिविधि, डिफ़ॉल्टfalse)-
execApprovals: केवल Discord के लिए exec अनुमोदन DMs (बटन UI)। 12.enabled,approvers,agentFilter,sessionFilterसमर्थित हैं।
Reaction notifications use guilds.<id>15.allowlist:guilds.16..users` से सभी संदेशों पर रिएक्शन (खाली सूची अक्षम करती है)।
off: कोई reaction events नहीं।own: बॉट के अपने संदेशों पर reactions (डिफ़ॉल्ट)।all: सभी संदेशों पर सभी reactions।-
- PK लुकअप सक्षम करें ताकि प्रॉक्सी किए गए संदेश अंतर्निहित सिस्टम + सदस्य में रेज़ॉल्व हों।18. सक्षम होने पर, OpenClaw अलाउलिस्ट्स के लिए सदस्य पहचान का उपयोग करता है और आकस्मिक Discord पिंग से बचने के लिए प्रेषक को
Member (PK:System)के रूप में लेबल करता है।
- PK लुकअप सक्षम करें ताकि प्रॉक्सी किए गए संदेश अंतर्निहित सिस्टम + सदस्य में रेज़ॉल्व हों।18. सक्षम होने पर, OpenClaw अलाउलिस्ट्स के लिए सदस्य पहचान का उपयोग करता है और आकस्मिक Discord पिंग से बचने के लिए प्रेषक को
PluralKit (PK) समर्थन¶
dm.allowFrom,guilds.<id>.users, या प्रति-चैनलusersमेंpk:<memberId>का उपयोग करें।replyToMode:off(डिफ़ॉल्ट),first, याall।
{
channels: {
discord: {
pluralkit: {
enabled: true,
token: "pk_live_...", // optional; required for private systems
},
},
},
}
Allowlist नोट्स (PK-सक्षम):
-
- केवल तब लागू होता है जब मॉडल में reply टैग शामिल हो।23.
[[reply_to:<id>]]— कॉन्टेक्स्ट/इतिहास से किसी विशिष्ट संदेश आईडी को उत्तर दें।
- केवल तब लागू होता है जब मॉडल में reply टैग शामिल हो।23.
- Member डिस्प्ले नाम भी नाम/slug द्वारा मिलाए जाते हैं।
- Lookups मूल Discord संदेश ID (pre-proxy संदेश) का उपयोग करते हैं, इसलिए PK API इसे केवल अपनी 30-मिनट की विंडो के भीतर resolve करता है।
- यदि PK lookups विफल होते हैं (जैसे, बिना टोकन वाला निजी सिस्टम), तो proxied संदेश
बॉट संदेश माने जाते हैं और
channels.discord.allowBots=trueन होने पर हटा दिए जाते हैं।
Tool action defaults¶
| Action group | Default | Notes |
|---|---|---|
| reactions | enabled | React + list reactions + emojiList |
| stickers | enabled | स्टिकर भेजें |
| emojiUploads | enabled | इमोजी अपलोड करें |
| stickerUploads | enabled | स्टिकर अपलोड करें |
| polls | सक्रिय | पोल बनाएँ |
| permissions | सक्रिय | चैनल अनुमति स्नैपशॉट |
| messages | सक्रिय | पढ़ें/भेजें/संपादित/हटाएँ |
| threads | सक्रिय | बनाएँ/सूचीबद्ध/उत्तर दें |
| pins | सक्रिय | पिन/अनपिन/सूची |
| search | सक्रिय | संदेश खोज (preview फीचर) |
| memberInfo | सक्रिय | सदस्य जानकारी |
| roleInfo | सक्रिय | भूमिका सूची |
| channelInfo | सक्रिय | चैनल जानकारी + सूची |
| channels | सक्रिय | चैनल/श्रेणी प्रबंधन |
| voiceStatus | सक्रिय | वॉइस स्टेट लुकअप |
| events | सक्रिय | शेड्यूल्ड इवेंट्स सूची/निर्माण |
| roles | disabled | भूमिका जोड़ना/हटाना |
| moderation | disabled | Timeout/kick/ban |
| presence | disabled | बॉट स्थिति/गतिविधि (setPresence) |
-
- वर्तमान संदेश आईडी प्रॉम्प्ट्स में
[message_id: …]के रूप में जोड़ी जाती हैं; इतिहास प्रविष्टियों में पहले से ही आईडी शामिल होती हैं। 25. जबguilds.<id> .channelsमौजूद हो, तो सूचीबद्ध न किए गए चैनल डिफ़ॉल्ट रूप से अस्वीकृत होते हैं।
- वर्तमान संदेश आईडी प्रॉम्प्ट्स में
Reply tags¶
थ्रेडेड उत्तर का अनुरोध करने के लिए, मॉडल अपने आउटपुट में एक टैग शामिल कर सकता है:
[[reply_to_current]]— ट्रिगर करने वाले Discord संदेश का उत्तर दें।-
- जब
guilds.<id> .channelsछोड़ा जाता है, तो अलाउलिस्टेड गिल्ड के सभी चैनल अनुमत होते हैं।- Discord संदेश आईडी इंजेक्टेड कॉन्टेक्स्ट (
[discord message id: …]और इतिहास पंक्तियाँ) में प्रदर्शित की जाती हैं ताकि एजेंट उन्हें लक्षित कर सके।
- जब
व्यवहार channels.discord.replyToMode द्वारा नियंत्रित होता है:
off: टैग्स को अनदेखा करें।first: केवल पहला outbound chunk/attachment ही reply होता है।all: हर outbound chunk/attachment reply होता है।
Allowlist मिलान नोट्स:
allowFrom/users/groupChannelsids, नाम, टैग्स, या<@id>जैसे mentions स्वीकार करते हैं।discord:/user:(users) औरchannel:(group DMs) जैसे prefixes समर्थित हैं।- किसी भी प्रेषक/चैनल को अनुमति देने के लिए
*का उपयोग करें। -
- इमोजी यूनिकोड (जैसे,
✅) या कस्टम इमोजी सिंटैक्स जैसे<:party_blob:1234567890>हो सकते हैं।31. Feishu (Lark) एक टीम चैट प्लेटफ़ॉर्म है जिसका उपयोग कंपनियाँ संदेश और सहयोग के लिए करती हैं।
- इमोजी यूनिकोड (जैसे,
-
- यह प्लगइन प्लेटफ़ॉर्म की WebSocket इवेंट सब्सक्रिप्शन का उपयोग करके OpenClaw को Feishu/Lark बॉट से जोड़ता है ताकि सार्वजनिक वेबहुक URL को उजागर किए बिना संदेश प्राप्त किए जा सकें।33. 1.
- कोई भी चैनल अनुमति न देने के लिए
channels.discord.groupPolicy: "disabled"सेट करें (या खाली allowlist रखें)। - configure wizard
Guild/Channelनाम (public + private) स्वीकार करता है और संभव होने पर उन्हें IDs में resolve करता है। - स्टार्टअप पर, OpenClaw allowlists में चैनल/उपयोगकर्ता नामों को IDs में resolve करता है (जब बॉट सदस्यों को खोज सकता है) और मैपिंग लॉग करता है; unresolved प्रविष्टियाँ टाइप की हुई ही रखी जाती हैं।
Native command नोट्स:
- पंजीकृत commands OpenClaw के chat commands को प्रतिबिंबित करते हैं।
- Native commands DMs/guild संदेशों के समान allowlists का सम्मान करते हैं (
channels.discord.dm.allowFrom,channels.discord.guilds, प्रति-चैनल नियम)। - Slash commands Discord UI में उन उपयोगकर्ताओं को भी दिखाई दे सकते हैं जो allowlisted नहीं हैं; OpenClaw निष्पादन पर allowlists लागू करता है और “not authorized” उत्तर देता है।
Tool actions¶
एजेंट discord को निम्नलिखित जैसी actions के साथ कॉल कर सकता है:
react/reactions(reactions जोड़ें या सूचीबद्ध करें)sticker,poll,permissionsreadMessages,sendMessage,editMessage,deleteMessage- Read/search/pin tool payloads में normalized
timestampMs(UTC epoch ms) और raw Discordtimestampके साथtimestampUtcशामिल होते हैं। threadCreate,threadList,threadReplypinMessage,unpinMessage,listPinssearchMessages,memberInfo,roleInfo,roleAdd,roleRemove,emojiListchannelInfo,channelList,voiceStatus,eventList,eventCreatetimeout,kick,bansetPresence(बॉट गतिविधि और ऑनलाइन स्थिति)
- Feishu Open Platform खोलें
- 2.
सुरक्षा और संचालन¶
- बॉट टोकन को पासवर्ड की तरह मानें; supervised होस्ट्स पर
DISCORD_BOT_TOKENenv var को प्राथमिकता दें या config फ़ाइल अनुमतियों को लॉक डाउन करें। - बॉट को केवल आवश्यक अनुमतियाँ दें (आमतौर पर Read/Send Messages)।
- यदि बॉट अटका हुआ है या rate limited है, तो यह पुष्टि करने के बाद कि कोई अन्य प्रक्रिया Discord सत्र का स्वामी नहीं है, Gateway (
openclaw gateway --force) रीस्टार्ट करें।