Discord (Bot API)
Durum: resmi Discord ağ geçidi üzerinden DM’ler ve sunucu kanalları için hazır.Eşleştirme
Eğik çizgi komutları
Kanal sorun giderme
Hızlı kurulum
Bot içeren yeni bir uygulama oluşturmanız, botu sunucunuza eklemeniz ve OpenClaw ile eşleştirmeniz gerekir. Botunuzu kendi özel sunucunuza eklemenizi öneririz. Henüz bir sunucunuz yoksa, önce bir tane oluşturun (Create My Own > For me and my friends seçin).Bir Discord uygulaması ve bot oluşturun
Ayrıcalıklı intent'leri etkinleştirin
- Message Content Intent (gerekli)
- Server Members Intent (önerilir; rol izin listeleri ve addan kimliğe eşleştirme için gereklidir)
- Presence Intent (isteğe bağlı; yalnızca varlık güncellemeleri için gereklidir)
Bot token'ınızı kopyalayın
Bir davet URL'si oluşturun ve botu sunucunuza ekleyin
botapplications.commands
- View Channels
- Send Messages
- Read Message History
- Embed Links
- Attach Files
- Add Reactions (isteğe bağlı)
Developer Mode'u etkinleştirin ve kimliklerinizi toplayın
- User Settings (avatarınızın yanındaki dişli simgesi) → Advanced → Developer Mode seçeneğini açın
- Kenar çubuğunda server icon öğenize sağ tıklayın → Copy Server ID
- Kendi avatar öğenize sağ tıklayın → Copy User ID
Sunucu üyelerinden gelen DM'lere izin verin
Bot token'ınızı güvenli şekilde ayarlayın (sohbette göndermeyin)
openclaw gateway run sürecini durdurup yeniden başlatarak yeniden başlatın.OpenClaw'ı yapılandırın ve eşleştirin
- Ajanınıza sorun
- CLI / config
“Discord bot token’ımı zaten config içinde ayarladım. Lütfen User ID<user_id>ve Server ID<server_id>ile Discord kurulumunu tamamla.”
İlk DM eşleştirmesini onaylayın
- Ajanınıza sorun
- CLI
“Bu Discord eşleştirme kodunu onayla: <CODE>”
DISCORD_BOT_TOKEN yalnızca varsayılan hesap için kullanılır.
Gelişmiş giden çağrılar için (message tool/channel actions), açık bir çağrı başına token o çağrı için kullanılır. Bu, gönderme ve okuma/probe tarzı eylemler için geçerlidir (örneğin read/search/fetch/thread/pins/permissions). Hesap politikası/yeniden deneme ayarları ise yine etkin çalışma zamanı anlık görüntüsünde seçilen hesaptan gelir.Önerilen: Bir sunucu çalışma alanı kurun
DM’ler çalıştıktan sonra, Discord sunucunuzu her kanalın kendi bağlamına sahip kendi ajan oturumunu aldığı tam bir çalışma alanı olarak ayarlayabilirsiniz. Bu, yalnızca siz ve botunuzun bulunduğu özel sunucular için önerilir.Sunucunuzu sunucu izin listesine ekleyin
- Ajanınıza sorun
- Config
“Discord Server ID <server_id> değerimi sunucu izin listesine ekle”
@mention olmadan yanıtlara izin verin
- Ajanınıza sorun
- Config
“Ajanımın bu sunucuda @mention yapılmasına gerek kalmadan yanıt vermesine izin ver”
Sunucu kanallarında bellek kullanımını planlayın
- Ajanınıza sorun
- Elle
“Discord kanallarında soru sorduğumda, MEMORY.md içindeki uzun vadeli bağlama ihtiyaç duyarsan memory_search veya memory_get kullan.”
#coding, #home, #research veya iş akışınıza uyan her neyse onları kurabilirsiniz.
Çalışma zamanı modeli
- Discord bağlantısının sahibi gateway’dir.
- Yanıt yönlendirmesi deterministiktir: Discord’dan gelen yanıtlar tekrar Discord’a gider.
- Varsayılan olarak (
session.dmScope=main), doğrudan sohbetler ajanın ana oturumunu paylaşır (agent:main:main). - Sunucu kanalları yalıtılmış oturum anahtarlarıdır (
agent:<agentId>:discord:channel:<channelId>). - Grup DM’leri varsayılan olarak yok sayılır (
channels.discord.dm.groupEnabled=false). - Yerel slash komutları yalıtılmış komut oturumlarında çalışır (
agent:<agentId>:discord:slash:<userId>), ancak yine deCommandTargetSessionKeydeğerini yönlendirilen konuşma oturumuna taşır.
Forum kanalları
Discord forum ve medya kanalları yalnızca ileti dizisi gönderilerini kabul eder. OpenClaw bunları oluşturmak için iki yolu destekler:- Bir ileti dizisini otomatik oluşturmak için forum üst öğesine (
channel:<forumId>) mesaj gönderin. İleti dizisi başlığı, mesajınızın ilk boş olmayan satırını kullanır. - Doğrudan bir ileti dizisi oluşturmak için
openclaw message thread createkullanın. Forum kanalları için--message-idgeçmeyin.
channel:<threadId>) gönderin.
Etkileşimli bileşenler
OpenClaw, ajan mesajları için Discord components v2 kapsayıcılarını destekler.components yüküyle message tool kullanın. Etkileşim sonuçları normal gelen mesajlar olarak ajana geri yönlendirilir ve mevcut Discord replyToMode ayarlarını izler.
Desteklenen bloklar:
text,section,separator,actions,media-gallery,file- Eylem satırları en fazla 5 düğmeye veya tek bir seçim menüsüne izin verir
- Seçim türleri:
string,user,role,mentionable,channel
components.reusable=true ayarlayın.
Bir düğmeye kimlerin tıklayabileceğini kısıtlamak için o düğmede allowedUsers ayarlayın (Discord kullanıcı kimlikleri, etiketler veya *). Yapılandırıldığında, eşleşmeyen kullanıcılar geçici bir ret alır.
/model ve /models slash komutları, sağlayıcı ve model açılır menülerinin yanı sıra bir Submit adımı içeren etkileşimli bir model seçiciyi açar. Seçici yanıtı ephemeral olur ve yalnızca komutu çağıran kullanıcı bunu kullanabilir.
Dosya ekleri:
fileblokları bir ek başvurusuna işaret etmelidir (attachment://<filename>)- Eki
media/path/filePathile sağlayın (tek dosya); birden çok dosya içinmedia-gallerykullanın - Yükleme adının ek başvurusu ile eşleşmesi gerektiğinde bunu geçersiz kılmak için
filenamekullanın
- En fazla 5 alanla
components.modalekleyin - Alan türleri:
text,checkbox,radio,select,role-select,user-select - OpenClaw otomatik olarak bir tetikleyici düğme ekler
Erişim denetimi ve yönlendirme
- DM ilkesi
- Sunucu ilkesi
- Mention'lar ve grup DM'leri
channels.discord.dmPolicy DM erişimini denetler (eski: channels.discord.dm.policy):pairing(varsayılan)allowlistopen(channels.discord.allowFromiçinde"*"bulunmasını gerektirir; eski:channels.discord.dm.allowFrom)disabled
pairing modunda eşleştirme istenir).Çoklu hesap önceliği:channels.discord.accounts.default.allowFromyalnızcadefaulthesabına uygulanır.- Adlandırılmış hesaplar, kendi
allowFromdeğerleri ayarlanmamışsachannels.discord.allowFromdeğerini devralır. - Adlandırılmış hesaplar
channels.discord.accounts.default.allowFromdeğerini devralmaz.
user:<id><@id>mention
Role dayalı ajan yönlendirme
Discord sunucu üyelerini rol kimliğine göre farklı ajanlara yönlendirmek içinbindings[].match.roles kullanın. Role dayalı bağlamalar yalnızca rol kimliklerini kabul eder ve peer veya parent-peer bağlamalarından sonra, yalnızca sunucu bağlamalarından önce değerlendirilir. Bir bağlama başka eşleşme alanları da ayarlarsa (örneğin peer + guildId + roles), yapılandırılmış tüm alanlar eşleşmelidir.
Developer Portal kurulumu
Uygulama ve bot oluşturun
Uygulama ve bot oluşturun
- Discord Developer Portal -> Applications -> New Application
- Bot -> Add Bot
- Bot token’ını kopyalayın
Ayrıcalıklı intent'ler
Ayrıcalıklı intent'ler
- Message Content Intent
- Server Members Intent (önerilir)
setPresence) üyeler için varlık güncellemelerini etkinleştirmeyi gerektirmez.OAuth kapsamları ve temel izinler
OAuth kapsamları ve temel izinler
- kapsamlar:
bot,applications.commands
- View Channels
- Send Messages
- Read Message History
- Embed Links
- Attach Files
- Add Reactions (isteğe bağlı)
Administrator kullanmaktan kaçının.Kimlikleri kopyalayın
Kimlikleri kopyalayın
- sunucu kimliği
- kanal kimliği
- kullanıcı kimliği
Yerel komutlar ve komut kimlik doğrulaması
commands.nativevarsayılan olarak"auto"değerindedir ve Discord için etkindir.- Kanal başına geçersiz kılma:
channels.discord.commands.native. commands.native=false, önceden kaydedilmiş Discord yerel komutlarını açıkça temizler.- Yerel komut kimlik doğrulaması, normal mesaj işlemeyle aynı Discord izin listelerini/ilkelerini kullanır.
- Komutlar, yetkili olmayan kullanıcılar için Discord arayüzünde yine de görünür olabilir; yürütme yine de OpenClaw kimlik doğrulamasını uygular ve “not authorized” döndürür.
ephemeral: true
Özellik ayrıntıları
Yanıt etiketleri ve yerel yanıtlar
Yanıt etiketleri ve yerel yanıtlar
[[reply_to_current]][[reply_to:<id>]]
channels.discord.replyToMode ile denetlenir:off(varsayılan)firstallbatched
off, örtük yanıt ileti dizilemesini devre dışı bırakır. Açık [[reply_to_*]] etiketlerine yine de uyulur.
first, tur için ilk giden Discord mesajına örtük yerel yanıt başvurusunu her zaman ekler.
batched, Discord’un örtük yerel yanıt başvurusunu yalnızca
gelen turun birden çok mesajdan oluşan gecikmeli bir toplu işlem olduğu durumda ekler. Bu,
yerel yanıtları çoğunlukla belirsiz ve patlamalı sohbetlerde istemeniz, her
tek mesajlık turda istememeniz durumunda faydalıdır.Mesaj kimlikleri bağlam/geçmiş içinde görünür, böylece ajanlar belirli mesajları hedefleyebilir.Canlı akış önizlemesi
Canlı akış önizlemesi
channels.discord.streamingönizleme akışını denetler (off|partial|block|progress, varsayılan:off).- Varsayılan
offolarak kalır çünkü Discord önizleme düzenlemeleri özellikle aynı hesap veya sunucu trafiğini birden çok bot ya da gateway paylaştığında hızla rate limit’e takılabilir. progress, kanallar arası tutarlılık için kabul edilir ve Discord’dapartialdeğerine eşlenir.channels.discord.streamModeeski bir takma addır ve otomatik olarak taşınır.partial, token’lar geldikçe tek bir önizleme mesajını düzenler.block, taslak boyutunda parçalar üretir (boyutu ve bölünme noktalarını ayarlamak içindraftChunkkullanın).
block modu parça varsayılanları (channels.discord.textChunkLimit ile sınırlandırılır):Geçmiş, bağlam ve ileti dizisi davranışı
Geçmiş, bağlam ve ileti dizisi davranışı
channels.discord.historyLimitvarsayılan20- fallback:
messages.groupChat.historyLimit 0devre dışı bırakır
channels.discord.dmHistoryLimitchannels.discord.dms["<user_id>"].historyLimit
- Discord ileti dizileri kanal oturumları olarak yönlendirilir
- üst ileti dizisi meta verileri, üst-oturum bağlantısı için kullanılabilir
- ileti dizisine özgü bir girdi yoksa ileti dizisi config’i üst kanal config’ini devralır
Alt ajanlar için ileti dizisine bağlı oturumlar
Alt ajanlar için ileti dizisine bağlı oturumlar
/focus <target>geçerli/yeni ileti dizisini bir alt ajan/oturum hedefine bağla/unfocusgeçerli ileti dizisi bağını kaldır/agentsetkin çalıştırmaları ve bağlanma durumunu göster/session idle <duration|off>odaklı bağlamalar için hareketsizlikte otomatik odak kaldırmayı incele/güncelle/session max-age <duration|off>odaklı bağlamalar için katı azami yaşı incele/güncelle
session.threadBindings.*genel varsayılanları ayarlar.channels.discord.threadBindings.*Discord davranışını geçersiz kılar.sessions_spawn({ thread: true })için ileti dizilerini otomatik oluşturmak/bağlamak üzerespawnSubagentSessionstrue olmalıdır.- ACP için ileti dizilerini otomatik oluşturmak/bağlamak üzere
spawnAcpSessionstrue olmalıdır (/acp spawn ... --thread ...veyasessions_spawn({ runtime: "acp", thread: true })). - Bir hesap için ileti dizisi bağlamaları devre dışıysa,
/focusve ilgili ileti dizisi bağlama işlemleri kullanılamaz.
Kalıcı ACP kanal bağlamaları
Kalıcı ACP kanal bağlamaları
type: "acp"vematch.channel: "discord"ilebindings[]
/acp spawn codex --bind here, mevcut Discord kanalını veya ileti dizisini yerinde bağlar ve gelecekteki mesajların aynı ACP oturumuna yönlenmesini sağlar.- Bu yine de “yeni bir Codex ACP oturumu başlat” anlamına gelebilir, ancak kendi başına yeni bir Discord ileti dizisi oluşturmaz. Mevcut kanal sohbet yüzeyi olarak kalır.
- Codex yine de diskte kendi
cwdveya backend çalışma alanında çalışabilir. Bu çalışma alanı Discord ileti dizisi değil, çalışma zamanı durumudur. - İleti dizisi mesajları üst kanal ACP bağını devralabilir.
- Bağlı bir kanal veya ileti dizisinde
/newve/reset, aynı ACP oturumunu yerinde sıfırlar. - Geçici ileti dizisi bağlamaları yine çalışır ve etkinken hedef çözümlemesini geçersiz kılabilir.
spawnAcpSessions, yalnızca OpenClaw’ın--thread auto|hereüzerinden bir alt ileti dizisini oluşturması/bağlaması gerektiğinde gerekir. Mevcut kanalda/acp spawn ... --bind hereiçin gerekli değildir.
Tepki bildirimleri
Tepki bildirimleri
offown(varsayılan)allallowlist(guilds.<id>.userskullanır)
Onay tepkileri
Onay tepkileri
ackReaction, OpenClaw gelen bir mesajı işlerken bir onay emojisi gönderir.Çözümleme sırası:channels.discord.accounts.<accountId>.ackReactionchannels.discord.ackReactionmessages.ackReaction- ajan kimlik emojisi fallback’i (
agents.list[].identity.emoji, yoksa ”👀”)
- Discord unicode emoji veya özel emoji adlarını kabul eder.
- Bir kanal veya hesap için tepkiyi devre dışı bırakmak üzere
""kullanın.
Config yazımları
Config yazımları
/config set|unset akışlarını etkiler (komut özellikleri etkin olduğunda).Devre dışı bırakma:Gateway proxy
Gateway proxy
channels.discord.proxy ile bir HTTP(S) proxy üzerinden yönlendirin.PluralKit desteği
PluralKit desteği
- izin listeleri
pk:<memberId>kullanabilir - üye görünen adları yalnızca
channels.discord.dangerouslyAllowNameMatching: trueolduğunda ad/slug ile eşleştirilir - aramalar özgün mesaj kimliğini kullanır ve zaman penceresiyle sınırlıdır
- arama başarısız olursa, proxy’lenen mesajlar bot mesajı olarak kabul edilir ve
allowBots=trueolmadığı sürece düşürülür
Presence yapılandırması
Presence yapılandırması
- 0: Playing
- 1: Streaming (
activityUrlgerektirir) - 2: Listening
- 3: Watching
- 4: Custom (etkinlik metnini durum durumu olarak kullanır; emoji isteğe bağlıdır)
- 5: Competing
autoPresence.healthyTextautoPresence.degradedTextautoPresence.exhaustedText({reason}placeholder’ını destekler)
Discord içinde onaylar
Discord içinde onaylar
channels.discord.execApprovals.enabledchannels.discord.execApprovals.approvers(isteğe bağlı; mümkün olduğundacommands.ownerAllowFromdeğerine fallback yapar)channels.discord.execApprovals.target(dm|channel|both, varsayılan:dm)agentFilter,sessionFilter,cleanupAfterResolve
enabled ayarlanmamış veya "auto" olduğunda ve en az bir onaylayıcı çözümlenebildiğinde yerel exec onaylarını otomatik etkinleştirir; bu ya execApprovals.approvers içinden ya da commands.ownerAllowFrom içinden olabilir. Discord, exec onaylayıcılarını kanal allowFrom, eski dm.allowFrom veya doğrudan mesaj defaultTo değerinden çıkarmaz. Discord’u yerel onay istemcisi olarak açıkça devre dışı bırakmak için enabled: false ayarlayın.target değeri channel veya both olduğunda onay istemi kanalda görünür olur. Düğmeleri yalnızca çözümlenmiş onaylayıcılar kullanabilir; diğer kullanıcılar ephemeral bir ret alır. Onay istemleri komut metnini içerir, bu nedenle kanal teslimatını yalnızca güvenilen kanallarda etkinleştirin. Kanal kimliği oturum anahtarından türetilemezse OpenClaw DM teslimatına fallback yapar.Discord ayrıca diğer sohbet kanallarının kullandığı ortak onay düğmelerini de işler. Yerel Discord bağdaştırıcısı esas olarak onaylayıcı DM yönlendirmesi ve kanal yayılımı ekler.
Bu düğmeler mevcut olduğunda birincil onay UX’i onlardır; OpenClaw
yalnızca araç sonucu sohbet onaylarının kullanılamadığını söylediğinde veya
tek yol manuel onaysa elle /approve komutu eklemelidir.Bu işleyici için gateway kimlik doğrulaması, diğer Gateway istemcileriyle aynı paylaşılan kimlik bilgisi çözümleme sözleşmesini kullanır:- env-öncelikli yerel kimlik doğrulama (
OPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD, ardındangateway.auth.*) - yerel modda,
gateway.auth.*ayarlanmamışsagateway.remote.*yalnızca fallback olarak kullanılabilir; yapılandırılmış ancak çözümlenmemiş yerel SecretRef’ler fail closed olur - uygulanabildiğinde
gateway.remote.*ile uzaktan mod desteği - URL geçersiz kılmaları override-safe’dir: CLI geçersiz kılmaları örtük kimlik bilgilerini yeniden kullanmaz ve env geçersiz kılmaları yalnızca env kimlik bilgilerini kullanır
plugin:öneki taşıyan kimliklerplugin.approval.resolveüzerinden çözülür.- Diğer kimlikler
exec.approval.resolveüzerinden çözülür. - Discord burada ekstra bir exec-to-plugin fallback sıçraması yapmaz; hangi gateway yöntemini çağıracağını kimlik öneki belirler.
Araçlar ve eylem kapıları
Discord mesaj eylemleri; mesajlaşma, kanal yönetimi, moderasyon, presence ve meta veri eylemlerini içerir. Temel örnekler:- mesajlaşma:
sendMessage,readMessages,editMessage,deleteMessage,threadReply - tepkiler:
react,reactions,emojiList - moderasyon:
timeout,kick,ban - presence:
setPresence
event-create eylemi, planlanan etkinlik kapak görselini ayarlamak için isteğe bağlı bir image parametresini (URL veya yerel dosya yolu) kabul eder.
Eylem kapıları channels.discord.actions.* altında bulunur.
Varsayılan kapı davranışı:
| Eylem grubu | Varsayılan |
|---|---|
| reactions, messages, threads, pins, polls, search, memberInfo, roleInfo, channelInfo, channels, voiceStatus, events, stickers, emojiUploads, stickerUploads, permissions | etkin |
| roles | devre dışı |
| moderation | devre dışı |
| presence | devre dışı |
Components v2 UI
OpenClaw, exec onayları ve bağlamlar arası işaretçiler için Discord components v2 kullanır. Discord mesaj eylemleri özel UI içincomponents de kabul edebilir (ileri düzey; discord tool üzerinden bir bileşen yükü oluşturmayı gerektirir), ancak eski embeds hâlâ kullanılabilir ve önerilmez.
channels.discord.ui.components.accentColor, Discord bileşen kapsayıcılarında kullanılan vurgu rengini ayarlar (hex).- Hesap başına
channels.discord.accounts.<id>.ui.components.accentColorile ayarlayın. - components v2 mevcut olduğunda
embedsyok sayılır.
Ses kanalları
OpenClaw, gerçek zamanlı ve sürekli konuşmalar için Discord ses kanallarına katılabilir. Bu, sesli mesaj eklerinden ayrıdır. Gereksinimler:- Yerel komutları etkinleştirin (
commands.nativeveyachannels.discord.commands.native). channels.discord.voiceyapılandırın.- Botun hedef ses kanalında Connect + Speak izinlerine ihtiyacı vardır.
/vc join|leave|status komutunu kullanın. Komut, hesabın varsayılan ajanını kullanır ve diğer Discord komutlarıyla aynı izin listesi ve sunucu ilkesi kurallarını izler.
Otomatik katılma örneği:
voice.tts, yalnızca ses oynatımı içinmessages.ttsdeğerini geçersiz kılar.- Ses transkript turları, sahip durumunu Discord
allowFrom(veyadm.allowFrom) üzerinden türetir; sahip olmayan konuşmacılar yalnızca sahibin kullanabildiği araçlara erişemez (örneğingatewayvecron). - Ses varsayılan olarak etkindir; devre dışı bırakmak için
channels.discord.voice.enabled=falseayarlayın. voice.daveEncryptionvevoice.decryptionFailureTolerance,@discordjs/voicekatılma seçeneklerine olduğu gibi aktarılır.@discordjs/voicevarsayılanları, ayarlanmamışsadaveEncryption=truevedecryptionFailureTolerance=24değerleridir.- OpenClaw ayrıca alma tarafındaki şifre çözme hatalarını izler ve kısa bir zaman penceresinde yinelenen hatalardan sonra ses kanalından ayrılıp yeniden katılarak otomatik kurtarma yapar.
- Alma günlükleri tekrar tekrar
DecryptionFailed(UnencryptedWhenPassthroughDisabled)gösteriyorsa, bu discord.js #11419 içinde izlenen yukarı akış@discordjs/voicealma hatası olabilir.
Sesli mesajlar
Discord sesli mesajları bir dalga biçimi önizlemesi gösterir ve OGG/Opus ses ile meta veri gerektirir. OpenClaw dalga biçimini otomatik olarak üretir, ancak ses dosyalarını incelemek ve dönüştürmek için gateway ana makinesindeffmpeg ve ffprobe erişilebilir olmalıdır.
Gereksinimler ve kısıtlar:
- Bir yerel dosya yolu sağlayın (URL’ler reddedilir).
- Metin içeriğini atlayın (Discord aynı yükte metin + sesli mesaja izin vermez).
- Her türlü ses biçimi kabul edilir; gerektiğinde OpenClaw bunu OGG/Opus’a dönüştürür.
Sorun giderme
İzin verilmeyen intent'ler kullanıldı veya bot sunucu mesajlarını görmüyor
İzin verilmeyen intent'ler kullanıldı veya bot sunucu mesajlarını görmüyor
- Message Content Intent’i etkinleştirin
- kullanıcı/üye çözümlemesine dayanıyorsanız Server Members Intent’i etkinleştirin
- intent’leri değiştirdikten sonra gateway’i yeniden başlatın
Sunucu mesajları beklenmedik şekilde engelleniyor
Sunucu mesajları beklenmedik şekilde engelleniyor
groupPolicydeğerini doğrulayınchannels.discord.guildsaltındaki sunucu izin listesini doğrulayın- sunucu
channelseşlemesi varsa, yalnızca listelenen kanallara izin verilir requireMentiondavranışını ve mention desenlerini doğrulayın
Require mention false ama yine de engelleniyor
Require mention false ama yine de engelleniyor
- eşleşen sunucu/kanal izin listesi olmadan
groupPolicy="allowlist" requireMentionyanlış yerde yapılandırılmış (mutlakachannels.discord.guildsveya kanal girdisi altında olmalıdır)- gönderici sunucu/kanal
usersizin listesi tarafından engelleniyor
Uzun süren işleyiciler zaman aşımına uğruyor veya yinelenen yanıtlar oluşuyor
Uzun süren işleyiciler zaman aşımına uğruyor veya yinelenen yanıtlar oluşuyor
Listener DiscordMessageListener timed out after 30000ms for event MESSAGE_CREATESlow listener detected ...discord inbound worker timed out after ...
- tek hesap:
channels.discord.eventQueue.listenerTimeout - çoklu hesap:
channels.discord.accounts.<accountId>.eventQueue.listenerTimeout
- tek hesap:
channels.discord.inboundWorker.runTimeoutMs - çoklu hesap:
channels.discord.accounts.<accountId>.inboundWorker.runTimeoutMs - varsayılan:
1800000(30 dakika); devre dışı bırakmak için0ayarlayın
eventQueue.listenerTimeout, kuyruklanan ajan turları için ayrı bir güvenlik supabı istiyorsanız ise yalnızca inboundWorker.runTimeoutMs kullanın.İzin denetimi uyumsuzlukları
İzin denetimi uyumsuzlukları
channels status --probe izin kontrolleri yalnızca sayısal kanal kimlikleri için çalışır.Slug anahtarları kullanıyorsanız çalışma zamanı eşleştirmesi yine de çalışabilir, ancak probe izinleri tam olarak doğrulayamaz.DM ve eşleştirme sorunları
DM ve eşleştirme sorunları
- DM devre dışı:
channels.discord.dm.enabled=false - DM ilkesi devre dışı:
channels.discord.dmPolicy="disabled"(eski:channels.discord.dm.policy) pairingmodunda eşleştirme onayı bekleniyor
Bottan bota döngüler
Bottan bota döngüler
channels.discord.allowBots=true ayarlarsanız, döngü davranışını önlemek için katı mention ve izin listesi kuralları kullanın.
Yalnızca bottan mention alan bot mesajlarını kabul etmek için channels.discord.allowBots="mentions" tercih edin.Voice STT, DecryptionFailed(...) ile düşüyor
Voice STT, DecryptionFailed(...) ile düşüyor
- Discord ses alma kurtarma mantığının mevcut olduğundan emin olmak için OpenClaw’ı güncel tutun (
openclaw update) channels.discord.voice.daveEncryption=truedeğerini doğrulayın (varsayılan)channels.discord.voice.decryptionFailureTolerance=24(yukarı akış varsayılanı) ile başlayın ve yalnızca gerekirse ayarlayın- günlüklerde şunları izleyin:
discord voice: DAVE decrypt failures detecteddiscord voice: repeated decrypt failures; attempting rejoin
- otomatik yeniden katılmadan sonra da hatalar sürerse günlükleri toplayın ve discord.js #11419 ile karşılaştırın
Yapılandırma başvuru işaretçileri
Birincil başvuru: Yüksek sinyalli Discord alanları:- başlangıç/kimlik doğrulama:
enabled,token,accounts.*,allowBots - ilke:
groupPolicy,dm.*,guilds.*,guilds.*.channels.* - komut:
commands.native,commands.useAccessGroups,configWrites,slashCommand.* - olay kuyruğu:
eventQueue.listenerTimeout(listener bütçesi),eventQueue.maxQueueSize,eventQueue.maxConcurrency - inbound worker:
inboundWorker.runTimeoutMs - yanıt/geçmiş:
replyToMode,historyLimit,dmHistoryLimit,dms.*.historyLimit - teslimat:
textChunkLimit,chunkMode,maxLinesPerMessage - akış:
streaming(eski takma ad:streamMode),draftChunk,blockStreaming,blockStreamingCoalesce - medya/yeniden deneme:
mediaMaxMb,retrymediaMaxMbgiden Discord yüklemelerini sınırlar (varsayılan:100MB)
- eylemler:
actions.* - presence:
activity,status,activityType,activityUrl - UI:
ui.components.accentColor - özellikler:
threadBindings, üst düzeybindings[](type: "acp"),pluralkit,execApprovals,intents,agentComponents,heartbeat,responsePrefix
Güvenlik ve işlemler
- Bot token’larını gizli bilgiler olarak ele alın (denetimli ortamlarda
DISCORD_BOT_TOKENtercih edilir). - En az ayrıcalık ilkesine göre Discord izinleri verin.
- Komut dağıtımı/durumu bayatsa, gateway’i yeniden başlatın ve
openclaw channels status --probeile tekrar kontrol edin.