Skip to main content

Discord (Bot API)

Status: ready for DM and guild text channels via the official Discord bot gateway.

Pairing

Discord DM’lari standart bo‘yicha pairing rejimiga o‘rnatilgan.

Slash commands

Native buyruq xatti-harakati va buyruqlar katalogi.

Channel troubleshooting

Kanallararo diagnostika va tuzatish jarayoni.

Tezkor sozlash

1

Create a Discord bot and enable intents

Discord Developer Portal’da ilova yarating, bot qo‘shing, so‘ng quyidagilarni yoqing:
2

Configure token

3

Invite the bot and start gateway

Botni serveringizga xabar yuborish ruxsatlari bilan taklif qiling.
4

Approve first DM pairing

Tokenni aniqlash hisobga (account) bog‘liq tarzda amalga oshiriladi. Config ichidagi token qiymatlari env fallback’dan ustun turadi. DISCORD_BOT_TOKEN faqat standart (default) hisob uchun ishlatiladi.

Runtime modeli

  • Gateway Discord ulanishiga egalik qiladi.
  • Javoblarni marshrutlash deterministik: Discord’dan kirgan javoblar yana Discord’ga qaytadi.
  • Standart holatda (session.dmScope=main), to‘g‘ridan-to‘g‘ri chatlar agentning asosiy sessiyasi (agent:main:main) bilan bo‘lishiladi.
  • Guild kanallari alohida sessiya kalitlariga ega (agent:<agentId>:discord:channel:<channelId>).
  • Group DM’lar standart holatda e’tiborsiz qoldiriladi (channels.discord.dm.groupEnabled=false).
  • Native slash buyruqlari alohida buyruq sessiyalarida ishlaydi (agent:<agentId>:discord:slash:<userId>), shu bilan birga marshrutlangan suhbat sessiyasiga CommandTargetSessionKey uzatiladi.

Kirishni boshqarish va marshrutlash

channels.discord.dmPolicy DM kirishini boshqaradi (legacy: channels.discord.dm.policy):

Rolga asoslangan agent marshrutlash

Discord guild a’zolarini role ID orqali turli agentlarga marshrutlash uchun bindings[].match.roles dan foydalaning. Rolga asoslangan binding’lar faqat role ID’larini qabul qiladi va peer yoki parent-peer binding’lardan keyin, ammo faqat guild binding’laridan oldin baholanadi. Agar binding boshqa match maydonlarini ham belgilasa (masalan peer + guildId + roles), barcha ko‘rsatilgan maydonlar mos kelishi kerak.

Developer Portal sozlamalari

Bot -> Privileged Gateway Intents bo‘limida quyidagilarni yoqing:
OAuth URL generator:
Discord Developer Mode’ni yoqing, so‘ng quyidagilarni nusxalang:

Mahalliy buyruqlar va buyruq autentifikatsiyasi

  • commands.native sukut bo‘yicha "auto" va Discord uchun yoqilgan.
  • Har bir kanal uchun bekor qilish: channels.discord.commands.native.
  • commands.native=false avval ro‘yxatdan o‘tkazilgan Discord mahalliy buyruqlarini aniq o‘chiradi.
  • Mahalliy buyruq autentifikatsiyasi odatiy xabarlarni qayta ishlash bilan bir xil Discord allowlist/policy qoidalaridan foydalanadi.
  • Buyruqlar Discord UI’da ruxsatsiz foydalanuvchilarga ko‘rinishi mumkin; bajarish jarayoni baribir OpenClaw autentifikatsiyasini qo‘llaydi va “not authorized” qaytaradi.
Buyruqlar katalogi va xatti-harakatlari uchun Slash commands ga qarang.

Funksiya tafsilotlari

Discord agent chiqishida javob teglarini qo‘llab-quvvatlaydi:
Guild tarix konteksti:
Har bir guild uchun reaksiya bildirishnoma rejimi:
ackReaction OpenClaw kiruvchi xabarni qayta ishlayotgan paytda tasdiqlovchi emoji yuboradi.
Kanal tomonidan boshlangan konfiguratsiya yozuvlari sukut bo‘yicha yoqilgan.
Discord gateway WebSocket trafigini channels.discord.proxy orqali HTTP(S) proksi orqali yo‘naltiring.
Proksilangan xabarlarni tizim a’zosi identifikatsiyasiga moslashtirish uchun PluralKit resolution’ni yoqing:
Presence yangilanishlari faqat status yoki activity maydoni o‘rnatilganda qo‘llaniladi.
Discord DM’larda tugma asosidagi exec tasdiqlarini qo‘llab-quvvatlaydi va ixtiyoriy ravishda tasdiq so‘rovlarini yuborilgan kanalga joylashi mumkin.

Vositalar va amal cheklovlari

Discord xabar amallari xabar yuborish, kanal administratsiyasi, moderatsiya, presence va metadata amallarini o‘z ichiga oladi. Asosiy misollar:
  • messaging: sendMessage, readMessages, editMessage, deleteMessage, threadReply
  • reaksiyalar: react, reactions, emojiList
  • moderatsiya: timeout, kick, ban
  • holat: setPresence
Action gate’lar channels.discord.actions.* ostida joylashgan. Standart gate xatti-harakati:

Components v2 UI

OpenClaw exec tasdiqlari va kontekstlararo belgilar uchun Discord components v2’dan foydalanadi. Discord xabar amallari maxsus UI uchun componentsni ham qabul qilishi mumkin (kengaytirilgan; Carbon component instansiyalarini talab qiladi), legacy embeds esa mavjud, biroq tavsiya etilmaydi.
  • channels.discord.ui.components.accentColor Discord komponent konteynerlarida ishlatiladigan aksent rangni (hex) belgilaydi.
  • Har bir akkaunt uchun channels.discord.accounts.<id>.ui.components.accentColor orqali sozlanadi.
  • Agar components v2 mavjud bo‘lsa, embeds e’tiborga olinmaydi.
Misol:

Ovozli xabarlar

Discord ovozli xabarlari to‘lqin shakli (waveform) ko‘rinishini ko‘rsatadi va OGG/Opus audio hamda metama’lumotlarni talab qiladi. OpenClaw to‘lqin shaklini avtomatik yaratadi, biroq audio fayllarni tekshirish va konvertatsiya qilish uchun gateway xostida ffmpeg va ffprobe mavjud bo‘lishi kerak. Talablar va cheklovlar:
  • Lokal fayl yo‘lini taqdim eting (URL’lar rad etiladi).
  • Matn kontentini kiritmang (Discord bir xil payload’da matn + ovozli xabarga ruxsat bermaydi).
  • Istalgan audio formati qabul qilinadi; kerak bo‘lsa OpenClaw OGG/Opus’ga konvertatsiya qiladi.
Misol:

Birinchi qadam: openclaw doctor va openclaw channels status --probe ni ishga tushiring (amaliy ogohlantirishlar + tezkor auditlar).

Keng tarqalgan sabablar:
channels status --probe ruxsat tekshiruvlari faqat raqamli kanal ID’lari uchun ishlaydi.
Standart holatda bot tomonidan yozilgan xabarlar e’tiborga olinmaydi.

Konfiguratsiya bo‘yicha havola ko‘rsatkichlari

Asosiy ma’lumotnoma: Muhim Discord maydonlari:
  • ishga tushirish/autentifikatsiya: enabled, token, accounts.*, allowBots
  • siyosat: groupPolicy, dm.*, guilds.*, guilds.*.channels.*
  • buyruq: commands.native, commands.useAccessGroups, configWrites
  • javob/tarix: replyToMode, historyLimit, dmHistoryLimit, dms.*.historyLimit
  • yetkazish: textChunkLimit, chunkMode, maxLinesPerMessage
  • media/qayta urinish: mediaMaxMb, retry
  • harakatlar: actions.*
  • holat: activity, status, activityType, activityUrl
  • UI: ui.components.accentColor
  • xususiyatlar: pluralkit, execApprovals, intents, agentComponents, heartbeat, responsePrefix

Xavfsizlik va operatsiyalar

  • Bot tokenlarini maxfiy ma’lumot sifatida saqlang (DISCORD_BOT_TOKEN nazorat qilinadigan muhitlarda tavsiya etiladi).
  • Eng kam zarur Discord ruxsatlarini bering.
  • Agar buyruq deploy/state eskirgan bo‘lsa, gateway’ni qayta ishga tushiring va openclaw channels status --probe bilan yana tekshiring.

Bog‘liq