Skip to main content

Discord (Bot API)

स्थिति: आधिकारिक Discord बॉट गेटवे के माध्यम से DM और guild टेक्स्ट चैनलों के लिए तैयार।

Pairing

Discord DMs डिफ़ॉल्ट रूप से pairing मोड में होते हैं।

Slash commands

नेटिव कमांड व्यवहार और कमांड कैटलॉग।

Channel troubleshooting

क्रॉस-चैनल डायग्नोस्टिक्स और रिपेयर फ़्लो।

त्वरित सेटअप

1

Create a Discord bot and enable intents

Discord Developer Portal में एक application बनाएं, एक bot जोड़ें, फिर सक्षम करें:
2

Configure token

3

Invite the bot and start gateway

अपने सर्वर पर संदेश अनुमतियों के साथ बॉट को आमंत्रित करें।
4

Approve first DM pairing

टोकन रेज़ोल्यूशन अकाउंट-अवेयर है। कॉन्फ़िग में दिए गए टोकन मान, env fallback पर प्राथमिकता लेते हैं। DISCORD_BOT_TOKEN केवल डिफ़ॉल्ट अकाउंट के लिए उपयोग होता है।

रनटाइम मॉडल

  • Gateway, Discord कनेक्शन का स्वामित्व रखता है।
  • रिप्लाई रूटिंग निर्धारक है: Discord से आने वाले संदेशों के उत्तर Discord पर ही भेजे जाते हैं।
  • डिफ़ॉल्ट रूप से (session.dmScope=main), डायरेक्ट चैट एजेंट के मुख्य सेशन (agent:main:main) को साझा करती हैं।
  • Guild चैनल अलग-थलग सेशन कीज़ होते हैं (agent:<agentId>:discord:channel:<channelId>)।
  • Group DM डिफ़ॉल्ट रूप से अनदेखे किए जाते हैं (channels.discord.dm.groupEnabled=false)।
  • नेटिव स्लैश कमांड अलग-थलग कमांड सेशन (agent:<agentId>:discord:slash:<userId>) में चलते हैं, जबकि रूट की गई वार्तालाप सेशन के लिए CommandTargetSessionKey भी साथ ले जाते हैं।

एक्सेस कंट्रोल और रूटिंग

channels.discord.dmPolicy DM एक्सेस को नियंत्रित करता है (लेगेसी: channels.discord.dm.policy):

भूमिका-आधारित एजेंट रूटिंग

Discord guild सदस्यों को role ID के आधार पर विभिन्न एजेंटों की ओर रूट करने के लिए bindings[].match.roles का उपयोग करें। भूमिका-आधारित bindings केवल role IDs स्वीकार करते हैं और peer या parent-peer bindings के बाद तथा केवल-guild bindings से पहले मूल्यांकित किए जाते हैं। यदि कोई binding अन्य match फ़ील्ड्स भी सेट करता है (उदाहरण के लिए peer + guildId + roles), तो सभी कॉन्फ़िगर किए गए फ़ील्ड्स का मिलान होना आवश्यक है।

Developer Portal सेटअप

Bot -> Privileged Gateway Intents में, सक्षम करें:
OAuth URL जनरेटर:
Discord Developer Mode सक्षम करें, फिर कॉपी करें:

नेटिव कमांड्स और कमांड प्रमाणीकरण

  • commands.native डिफ़ॉल्ट रूप से "auto" होता है और Discord के लिए सक्षम रहता है।
  • प्रति-चैनल ओवरराइड: channels.discord.commands.native
  • commands.native=false पहले से पंजीकृत Discord नेटिव कमांड्स को स्पष्ट रूप से हटा देता है।
  • नेटिव कमांड प्रमाणीकरण सामान्य संदेश हैंडलिंग की तरह ही Discord allowlists/policies का उपयोग करता है।
  • कमांड्स Discord UI में उन उपयोगकर्ताओं को दिखाई दे सकते हैं जो अधिकृत नहीं हैं; लेकिन निष्पादन के समय OpenClaw प्रमाणीकरण लागू होता है और “not authorized” लौटाया जाता है।
कमांड कैटलॉग और व्यवहार के लिए Slash commands देखें।

Retry policy

Discord एजेंट आउटपुट में reply टैग्स का समर्थन करता है:
Guild history संदर्भ:
प्रति-guild reaction सूचना मोड:
ackReaction OpenClaw द्वारा इनबाउंड संदेश प्रोसेस करते समय एक acknowledgment emoji भेजता है।
चैनल-प्रारंभित कॉन्फ़िग राइट्स डिफ़ॉल्ट रूप से सक्षम हैं।
channels.discord.proxy के साथ Discord gateway WebSocket ट्रैफ़िक को HTTP(S) प्रॉक्सी के माध्यम से रूट करें।
प्रॉक्सी किए गए संदेशों को सिस्टम सदस्य पहचान से मैप करने के लिए PluralKit resolution सक्षम करें:
Presence अपडेट केवल तब लागू होते हैं जब आप status या activity फ़ील्ड सेट करते हैं।
Discord DMs में बटन-आधारित exec approvals का समर्थन करता है और वैकल्पिक रूप से मूल चैनल में approval prompts पोस्ट कर सकता है।

टूल्स और एक्शन गेट्स

Discord संदेश एक्शंस में messaging, channel admin, moderation, presence और metadata एक्शंस शामिल हैं। मुख्य उदाहरण:
  • messaging: sendMessage, readMessages, editMessage, deleteMessage, threadReply
  • reactions: react, reactions, emojiList
  • moderation: timeout, kick, ban
  • presence: setPresence
Action gates channels.discord.actions.* के अंतर्गत होते हैं। डिफ़ॉल्ट गेट व्यवहार:

Components v2 UI

OpenClaw exec approvals और cross-context markers के लिए Discord components v2 का उपयोग करता है। Discord message actions कस्टम UI के लिए components भी स्वीकार कर सकते हैं (उन्नत; Carbon component instances आवश्यक), जबकि legacy embeds अभी भी उपलब्ध हैं लेकिन अनुशंसित नहीं हैं।
  • channels.discord.ui.components.accentColor Discord component containers द्वारा उपयोग किए जाने वाले accent color (hex) को सेट करता है।
  • प्रत्येक account के लिए channels.discord.accounts.<id>.ui.components.accentColor सेट करें।
  • जब components v2 मौजूद हों तो embeds को अनदेखा कर दिया जाता है।
उदाहरण:

Voice messages

Discord voice messages में waveform preview दिखाई देता है और OGG/Opus ऑडियो के साथ metadata आवश्यक होता है। OpenClaw waveform स्वतः उत्पन्न करता है, लेकिन ऑडियो फ़ाइलों की जाँच और रूपांतरण के लिए gateway host पर ffmpeg और ffprobe उपलब्ध होने चाहिए। आवश्यकताएँ और सीमाएँ:
  • स्थानीय फ़ाइल पथ प्रदान करें (URLs अस्वीकार किए जाते हैं)।
  • टेक्स्ट सामग्री शामिल न करें (Discord एक ही payload में टेक्स्ट + voice message की अनुमति नहीं देता)।
  • कोई भी ऑडियो फ़ॉर्मेट स्वीकार्य है; आवश्यकता होने पर OpenClaw इसे OGG/Opus में बदल देता है।
उदाहरण:

समस्या-निवारण

सामान्य कारण:
channels status --probe permission checks केवल numeric channel IDs के लिए काम करते हैं।
डिफ़ॉल्ट रूप से bot द्वारा लिखे गए संदेशों को अनदेखा किया जाता है।

Configuration reference pointers

प्राथमिक संदर्भ: उच्च-प्राथमिकता वाले Discord फ़ील्ड्स:
  • startup/auth: enabled, token, accounts.*, allowBots
  • policy: groupPolicy, dm.*, guilds.*, guilds.*.channels.*
  • command: commands.native, commands.useAccessGroups, configWrites
  • reply/history: replyToMode, historyLimit, dmHistoryLimit, dms.*.historyLimit
  • delivery: textChunkLimit, chunkMode, maxLinesPerMessage
  • media/retry: mediaMaxMb, retry
  • actions: actions.*
  • presence: activity, status, activityType, activityUrl
  • UI: ui.components.accentColor
  • features: pluralkit, execApprovals, intents, agentComponents, heartbeat, responsePrefix

सुरक्षा और संचालन

  • बॉट टोकन को सीक्रेट की तरह संभालें (सुपरवाइज़्ड वातावरण में DISCORD_BOT_TOKEN को प्राथमिकता दें)।
  • न्यूनतम-आवश्यक Discord अनुमतियाँ प्रदान करें।
  • यदि command deploy/state पुराना है, तो gateway को पुनः शुरू करें और openclaw channels status --probe के साथ दोबारा जाँच करें।

संबंधित