Discord’un resmi Gateway’i üzerinden DM’ler ve guild kanalları için hazır.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.
Eşleştirme
Slash 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).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 ad ile ID eşleştirme için gereklidir)
- Presence Intent (isteğe bağlı; yalnızca presence güncellemeleri için gerekir)
Bot token'ınızı kopyalayın
Davet URL'si oluşturun ve botu sunucunuza ekleyin
botapplications.commands
- Kanalları Görüntüle Metin İzinleri
- Mesaj Gönder
- Mesaj Geçmişini Oku
- Bağlantıları Göm
- Dosya Ekle
- Tepki Ekle (isteğe bağlı)
Geliştirici Modu'nu etkinleştirin ve ID'lerinizi toplayın
- User Settings öğesine (avatarınızın yanındaki dişli simgesi) tıklayın → Advanced → Developer Mode seçeneğini açın
- Kenar çubuğundaki sunucu simgenize sağ tıklayın → Copy Server ID
- Kendi avatarınıza sağ tıklayın → Copy User ID
Sunucu üyelerinden DM'lere izin verin
Bot token'ınızı güvenli biçimde ayarlayın (sohbette göndermeyin)
openclaw gateway run sürecini durdurup yeniden başlatarak yeniden başlatın.
Yönetilen hizmet kurulumları için, DISCORD_BOT_TOKEN bulunan bir shell’den openclaw gateway install çalıştırın ya da değişkeni ~/.openclaw/.env içinde saklayın; böylece hizmet yeniden başlatıldıktan sonra env SecretRef değerini çözebilir.
Host’unuz Discord’un başlangıçtaki uygulama araması tarafından engelleniyor veya hız sınırına takılıyorsa, başlangıcın bu REST çağrısını atlayabilmesi için Discord uygulama/client ID’sini Developer Portal’dan ayarlayın. Varsayılan hesap için channels.discord.applicationId kullanın; birden fazla Discord botu çalıştırıyorsanız channels.discord.accounts.<accountId>.applicationId kullanın.OpenClaw'u yapılandırın ve eşleştirin
- Ajanınıza sorun
- CLI / yapılandırma
“Discord bot token’ımı config içinde zaten 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.
Etkin iki Discord hesabı aynı bot token’ına çözümlenirse, OpenClaw bu token için yalnızca bir Gateway izleyicisi başlatır. Config kaynaklı token varsayılan env yedeğine göre önceliklidir; aksi halde ilk etkin hesap kazanır ve yinelenen hesap devre dışı olarak bildirilir.
Gelişmiş giden çağrılar (mesaj aracı/kanal eylemleri) için 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ı yine etkin çalışma zamanı anlık görüntüsündeki seçili hesaptan gelir.Önerilen: Bir guild çalışma alanı kurun
DM’ler çalıştıktan sonra, Discord sunucunuzu her kanalın kendi bağlamına sahip ayrı bir ajan oturumu aldığı tam bir çalışma alanı olarak kurabilirsiniz. Bu, yalnızca sizin ve botunuzun bulunduğu özel sunucular için önerilir.Sunucunuzu guild izin listesine ekleyin
- Ajanınıza sorun
- Yapılandırma
“Discord Server ID <server_id> değerimi guild izin listesine ekle”
@mention olmadan yanıtlara izin verin
message aracıyla gönderilmelidir; böylece ajan varsayılan olarak sessiz kalabilir ve yalnızca kanal yanıtının yararlı olduğuna karar verdiğinde gönderi paylaşır.Bu, seçilen modelin araçları güvenilir biçimde çağırması gerektiği anlamına gelir. Discord yazıyor gösteriyor ve günlükler token kullanımı gösteriyor ancak gönderilmiş mesaj yoksa, oturum günlüğünde didSendViaMessagingTool: false ile asistan metni olup olmadığını kontrol edin. Bu, modelin message(action=send) çağırmak yerine gizli bir final yanıt ürettiği anlamına gelir. Daha güçlü araç çağırma modeline geçin veya eski otomatik final yanıtlarını geri yüklemek için aşağıdaki yapılandırmayı kullanın.- Ajanınıza sorun
- Yapılandırma
“Ajanımın bu sunucuda @mention edilmesine gerek kalmadan yanıt vermesine izin ver”
Guild kanallarında bellek için plan yapın
- Ajanınıza sorun
- Elle
“Discord kanallarında soru sorduğumda, MEMORY.md içinden uzun süreli bağlama ihtiyacın olursa memory_search veya memory_get kullan.”
#coding, #home, #research veya iş akışınıza uyan başka herhangi bir şeyi kurabilirsiniz.
Çalışma zamanı modeli
- Gateway, Discord bağlantısının sahibidir.
- Yanıt yönlendirme deterministiktir: Discord gelen yanıtları tekrar Discord’a döner.
- Discord sunucu/kanal meta verileri, kullanıcıya görünen bir yanıt ön eki olarak değil, güvenilmeyen bağlam olarak model istemine eklenir. Bir model bu zarfı geri kopyalarsa, OpenClaw kopyalanan meta verileri giden yanıtlardan ve gelecekteki yeniden oynatma bağlamından çıkarır.
- 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 yönlendirilmiş konuşma oturumunaCommandTargetSessionKeytaşımaya devam eder. - Discord’a metin tabanlı cron/heartbeat duyuru teslimi, son asistan tarafından görülebilen yanıtı bir kez kullanır. Medya ve yapılandırılmış bileşen yükleri, ajan birden fazla teslim edilebilir yük ürettiğinde çok mesajlı kalır.
Forum kanalları
Discord forum ve medya kanalları yalnızca iş parçacığı gönderilerini kabul eder. OpenClaw bunları oluşturmak için iki yolu destekler:- Otomatik olarak bir iş parçacığı oluşturmak için forum üst öğesine (
channel:<forumId>) bir mesaj gönderin. İş parçacığı başlığı, mesajınızın ilk boş olmayan satırını kullanır. - Doğrudan bir iş parçacığı oluşturmak için
openclaw message thread createkullanın. Forum kanalları için--message-idgeçmeyin.
channel:<threadId>).
Etkileşimli bileşenler
OpenClaw, ajan mesajları için Discord components v2 kapsayıcılarını destekler.components yüküyle mesaj aracını 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 kimin 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ı, model ve uyumlu çalışma zamanı açılır menülerinin yanı sıra bir Gönder adımı içeren etkileşimli bir model seçici açar. /models add kullanımdan kaldırılmıştır ve artık sohbetten model kaydetmek yerine bir kullanımdan kaldırma mesajı döndürür. Seçici yanıtı geçicidir ve yalnızca komutu çağıran kullanıcı bunu kullanabilir. Discord seçim menüleri 25 seçenekle sınırlıdır, bu nedenle seçicinin dinamik olarak keşfedilen modelleri yalnızca openai-codex veya vllm gibi seçili sağlayıcılar için göstermesini istediğinizde agents.defaults.models içine provider/* girdileri ekleyin.
Dosya ekleri:
fileblokları bir ek başvurusuna işaret etmelidir (attachment://<filename>)- Eki
media/path/filePathüzerinden sağlayın (tek dosya); birden fazla dosya içinmedia-gallerykullanın - Yükleme adının ek başvurusuyla eşleşmesi gerektiğinde 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üğmesi ekler
Erişim denetimi ve yönlendirme
- DM policy
- Access groups
- Guild policy
- Mentions and group DMs
channels.discord.dmPolicy, DM erişimini denetler. channels.discord.allowFrom, kanonik DM izin listesidir.pairing(varsayılan)allowlistopen(channels.discord.allowFromdeğerinin"*"içermesini gerektirir)disabled
pairing modunda eşleştirme istemi gösterilir).Çoklu hesap önceliği:channels.discord.accounts.default.allowFromyalnızcadefaulthesabı için geçerlidir.- Tek bir hesap için
allowFrom, eskidm.allowFromdeğerine göre önceliklidir. - Adlandırılmış hesaplar, kendi
allowFromve eskidm.allowFromdeğerleri ayarlanmamışsachannels.discord.allowFromdeğerini devralır. - Adlandırılmış hesaplar
channels.discord.accounts.default.allowFromdeğerini devralmaz.
channels.discord.dm.policy ve channels.discord.dm.allowFrom uyumluluk için hâlâ okunur. openclaw doctor --fix, erişimi değiştirmeden yapabildiğinde bunları dmPolicy ve allowFrom değerlerine taşır.Teslim için DM hedef biçimi:user:<id><@id>bahsi
allowFrom listesinde yer alan kimlikler uyumluluk için kullanıcı DM hedefleri olarak ele alınır.Rol tabanlı ajan yönlendirmesi
Discord sunucu üyelerini rol kimliğine göre farklı ajanlara yönlendirmek içinbindings[].match.roles kullanın. Rol tabanlı bağlamalar yalnızca rol kimliklerini kabul eder ve eş ya da üst-eş bağlamalardan sonra, yalnızca sunucu bağlamalarından önce değerlendirilir. Bir bağlama başka eşleşme alanları da ayarlıyorsa (örneğin peer + guildId + roles), yapılandırılmış tüm alanlar eşleşmelidir.
Yerel komutlar ve komut kimlik doğrulaması
commands.nativevarsayılan olarak"auto"değerine ayarlanır ve Discord için etkindir.- Kanal başına geçersiz kılma:
channels.discord.commands.native. commands.native=false, başlangıç sırasında Discord eğik çizgi komutu kaydını ve temizliğini atlar. Daha önce kaydedilmiş komutlar, siz bunları Discord uygulamasından kaldırana kadar Discord içinde görünür kalabilir.- Yerel komut kimlik doğrulaması, normal mesaj işleme ile aynı Discord izin listelerini/ilkelerini kullanır.
- Komutlar, yetkili olmayan kullanıcılar için Discord kullanıcı arayüzünde hâlâ görünebilir; yürütme yine de OpenClaw kimlik doğrulamasını uygular ve “yetkili değil” 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 tarafından denetlenir:off(varsayılan)firstallbatched
off, örtük yanıt iş parçacığı oluşturmayı devre dışı bırakır. Açık [[reply_to_*]] etiketleri yine de dikkate alınır.
first, dönüş için ilk giden Discord mesajına örtük yerel yanıt referansını her zaman ekler.
batched, Discord’un örtük yerel yanıt referansını yalnızca gelen dönüş
birden fazla mesajdan oluşan gecikmeli bir grup olduğunda ekler. Bu,
yerel yanıtları her tek mesajlık dönüşte değil, esas olarak belirsiz
yoğun sohbetler için istediğinizde kullanışlıdır.Mesaj kimlikleri, aracıların belirli mesajları hedefleyebilmesi için bağlamda/geçmişte sunulur.Canlı akış önizlemesi
Canlı akış önizlemesi
channels.discord.streaming, off | partial | block | progress (varsayılan) değerlerini alır. progress, düzenlenebilir tek bir durum taslağı tutar ve bunu son teslimata kadar araç ilerlemesiyle günceller; paylaşılan başlangıç etiketi kayan bir satırdır, bu nedenle yeterince iş göründüğünde geri kalanlar gibi kayarak uzaklaşır. streamMode eski bir çalışma zamanı takma adıdır. Kalıcı yapılandırmayı kanonik anahtara yeniden yazmak için openclaw doctor --fix komutunu çalıştırın.Discord önizleme düzenlemelerini devre dışı bırakmak için channels.discord.streaming.mode değerini off olarak ayarlayın. Discord blok akışı açıkça etkinleştirilirse OpenClaw çift akışı önlemek için önizleme akışını atlar.partial, belirteçler geldikçe tek bir önizleme mesajını düzenler.block, taslak boyutunda parçalar yayınlar (boyutu ve kesme noktalarını ayarlamak içindraftChunkkullanın,textChunkLimitile sınırlandırılır).- Medya, hata ve açık yanıt sonları bekleyen önizleme düzenlemelerini iptal eder.
streaming.preview.toolProgress(varsayılantrue), araç/ilerleme güncellemelerinin önizleme mesajını yeniden kullanıp kullanmayacağını denetler.- Araç/ilerleme satırları, kullanılabildiğinde kompakt emoji + başlık + ayrıntı olarak işlenir; örneğin
🛠️ Bash: run testsveya🔎 Web Search: for "query". streaming.preview.commandText/streaming.progress.commandText, kompakt ilerleme satırlarında komut/yürütme ayrıntısını denetler:raw(varsayılan) veyastatus(yalnızca araç etiketi).
block akışı açıkça etkinleştirildiğinde OpenClaw çift akışı önlemek için önizleme akışını atlar.Geçmiş, bağlam ve iş parçacığı davranışı
Geçmiş, bağlam ve iş parçacığı davranışı
channels.discord.historyLimitvarsayılan20- yedek:
messages.groupChat.historyLimit 0devre dışı bırakır
channels.discord.dmHistoryLimitchannels.discord.dms["<user_id>"].historyLimit
- Discord iş parçacıkları kanal oturumları olarak yönlendirilir ve geçersiz kılınmadıkça üst kanal yapılandırmasını devralır.
- İş parçacığı oturumları, üst kanalın oturum düzeyi
/modelseçimini yalnızca model için bir yedek olarak devralır; iş parçacığı yerelindeki/modelseçimleri yine de önceliklidir ve transkript devralma etkinleştirilmedikçe üst transkript geçmişi kopyalanmaz. channels.discord.thread.inheritParent(varsayılanfalse), yeni otomatik iş parçacıklarının üst transkriptten başlatılmasını sağlar. Hesap başına geçersiz kılmalarchannels.discord.accounts.<id>.thread.inheritParentaltında bulunur.- Mesaj aracı tepkileri
user:<id>DM hedeflerini çözebilir. guilds.<guild>.channels.<channel>.requireMention: false, yanıt aşaması etkinleştirme yedeği sırasında korunur.
Alt aracılar için iş parçacığına bağlı oturumlar
Alt aracılar için iş parçacığına bağlı oturumlar
/focus <target>mevcut/yeni iş parçacığını bir alt aracı/oturum hedefine bağla/unfocusmevcut iş parçacığı bağını kaldır/agentsetkin çalıştırmaları ve bağ durumunu göster/session idle <duration|off>odaklanmış bağlar için hareketsizlik sonrası otomatik odaktan çıkarma ayarını incele/güncelle/session max-age <duration|off>odaklanmış bağlar için katı en yüksek yaşı incele/güncelle
session.threadBindings.*genel varsayılanları ayarlar.channels.discord.threadBindings.*Discord davranışını geçersiz kılar.spawnSessions,sessions_spawn({ thread: true })ve ACP iş parçacığı başlatmaları için iş parçacıklarını otomatik oluşturmayı/bağlamayı denetler. Varsayılan:true.defaultSpawnContext, iş parçacığına bağlı başlatmalar için yerel alt aracı bağlamını denetler. Varsayılan:"fork".- Kullanımdan kaldırılmış
spawnSubagentSessions/spawnAcpSessionsanahtarlarıopenclaw doctor --fixtarafından taşınır. - Bir hesap için iş parçacığı bağları devre dışı bırakılmışsa
/focusve ilgili iş parçacığı bağlama işlemleri kullanılamaz.
Kalıcı ACP kanal bağları
Kalıcı ACP kanal bağları
type: "acp"vematch.channel: "discord"ilebindings[]
/acp spawn codex --bind here, mevcut kanalı veya iş parçacığını yerinde bağlar ve gelecekteki mesajları aynı ACP oturumunda tutar. İş parçacığı mesajları üst kanal bağını devralır.- Bağlı bir kanalda veya iş parçacığında
/newve/reset, aynı ACP oturumunu yerinde sıfırlar. Geçici iş parçacığı bağları etkinken hedef çözümlemeyi geçersiz kılabilir. spawnSessions,--thread auto|hereüzerinden alt iş parçacığı oluşturmayı/bağlamayı sınırlar.
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- aracı kimliği emoji yedeği (
agents.list[].identity.emoji, aksi halde ”👀”)
- Discord unicode emojileri veya özel emoji adlarını kabul eder.
- Bir kanal veya hesap için tepkiyi devre dışı bırakmak üzere
""kullanın.
Yapılandırma yazımları
Yapılandırma 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ırlandırılır
- arama başarısız olursa proxy üzerinden iletilen mesajlar bot mesajları olarak değerlendirilir ve
allowBots=trueolmadıkça bırakılır
Giden mention takma adları
Giden mention takma adları
mentionAliases kullanın. Anahtarlar başında @ olmayan handle’lardır; değerler Discord kullanıcı kimlikleridir. Bilinmeyen handle’lar, @everyone, @here ve Markdown kod aralıkları içindeki mention’lar değiştirilmeden bırakılır.Presence yapılandırması
Presence yapılandırması
- 0: Oynuyor
- 1: Yayın yapıyor (
activityUrlgerektirir) - 2: Dinliyor
- 3: İzliyor
- 4: Özel (etkinlik metnini durum hâli olarak kullanır; emoji isteğe bağlıdır)
- 5: Yarışıyor
autoPresence.healthyTextautoPresence.degradedTextautoPresence.exhaustedText({reason}yer tutucusunu destekler)
Approvals in Discord
Approvals in Discord
channels.discord.execApprovals.enabledchannels.discord.execApprovals.approvers(isteğe bağlı; mümkün olduğundacommands.ownerAllowFromdeğerine geri döner)channels.discord.execApprovals.target(dm|channel|both, varsayılan:dm)agentFilter,sessionFilter,cleanupAfterResolve
enabled ayarlanmamış veya "auto" olduğunda ve execApprovals.approvers ya da commands.ownerAllowFrom üzerinden en az bir onaylayıcı çözümlenebildiğinde Discord yerel exec onaylarını otomatik olarak etkinleştirir. Discord, exec onaylayıcılarını kanal allowFrom, eski dm.allowFrom veya doğrudan mesaj defaultTo değerinden çıkarım yapmaz. Discord’u yerel onay istemcisi olarak açıkça devre dışı bırakmak için enabled: false ayarlayın./diagnostics ve /export-trajectory gibi hassas, yalnızca sahip komutlarına yönelik grup komutları için OpenClaw onay istemlerini ve nihai sonuçları özel olarak gönderir. Komutu çağıran sahibin Discord sahip rotası varsa önce Discord DM’yi dener; bu yoksa Telegram gibi commands.ownerAllowFrom içindeki ilk kullanılabilir sahip rotasına geri döner.target, channel veya both olduğunda onay istemi kanalda görünür. Düğmeleri yalnızca çözümlenmiş onaylayıcılar kullanabilir; diğer kullanıcılar geçici bir ret alır. Onay istemleri komut metnini içerir, bu nedenle kanal teslimini yalnızca güvenilir kanallarda etkinleştirin. Kanal kimliği oturum anahtarından türetilemezse OpenClaw DM teslimine geri döner.Discord, diğer sohbet kanalları tarafından kullanılan paylaşılan onay düğmelerini de işler. Yerel Discord bağdaştırıcısı temel olarak onaylayıcı DM yönlendirmesi ve kanal yayılımı ekler.
Bu düğmeler mevcut olduğunda birincil onay UX’i bunlardır; OpenClaw
yalnızca araç sonucu sohbet onaylarının kullanılamadığını veya manuel onayın tek yol olduğunu söylediğinde manuel bir /approve komutu
içermelidir.
Discord yerel onay çalışma zamanı etkin değilse OpenClaw yerel deterministik
/approve <id> <decision> istemini görünür tutar. Çalışma zamanı
etkinse ancak herhangi bir hedefe yerel kart teslim edilemiyorsa
OpenClaw, bekleyen onaydan tam /approve komutunu içeren aynı sohbet içinde bir yedek bildirim gönderir.Gateway kimlik doğrulaması ve onay çözümlemesi paylaşılan Gateway istemci sözleşmesini izler (plugin: kimlikleri plugin.approval.resolve üzerinden; diğer kimlikler exec.approval.resolve üzerinden çözümlenir). Onayların süresi varsayılan olarak 30 dakika sonra dolar.Bkz. Exec onayları.Araçlar ve eylem kapıları
Discord mesaj eylemleri mesajlaşma, kanal yöneticisi, moderasyon, durum ve meta veri eylemlerini içerir. Temel örnekler:- mesajlaşma:
sendMessage,readMessages,editMessage,deleteMessage,threadReply - tepkiler:
react,reactions,emojiList - moderasyon:
timeout,kick,ban - durum:
setPresence
event-create eylemi, planlanmış 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ışı |
Bileşenler v2 kullanıcı arayüzü
OpenClaw, exec onayları ve bağlamlar arası işaretleyiciler için Discord bileşenleri v2’yi kullanır. Discord mesaj eylemleri özel kullanıcı arayüzü içincomponents da kabul edebilir (ileri düzey; discord aracıyla bir bileşen yükü oluşturmayı gerektirir), eski embeds ise kullanılabilir kalır ancak önerilmez.
channels.discord.ui.components.accentColor, Discord bileşen kapsayıcıları tarafından kullanılan vurgu rengini ayarlar (hex).- Hesap başına
channels.discord.accounts.<id>.ui.components.accentColorile ayarlayın. - Bileşenler v2 mevcut olduğunda
embedsyok sayılır.
Ses
Discord’un iki ayrı ses yüzeyi vardır: gerçek zamanlı ses kanalları (sürekli konuşmalar) ve sesli mesaj ekleri (dalga formu önizleme biçimi). Gateway her ikisini de destekler.Ses kanalları
Kurulum kontrol listesi:- Discord Developer Portal’da Message Content Intent’i etkinleştirin.
- Rol/kullanıcı izin listeleri kullanıldığında Server Members Intent’i etkinleştirin.
- Botu
botveapplications.commandskapsamlarıyla davet edin. - Hedef ses kanalında Connect, Speak, Send Messages ve Read Message History izinlerini verin.
- Yerel komutları etkinleştirin (
commands.nativeveyachannels.discord.commands.native). channels.discord.voiceöğesini yapılandırın.
/vc join|leave|status kullanın. Komut, hesabın varsayılan aracısını kullanır ve diğer Discord komutlarıyla aynı izin listesi ve grup ilkesi kurallarını izler.
voice.tts, yalnızcastt-ttsses çalma içinmessages.ttsdeğerini geçersiz kılar. Realtime modlarıvoice.realtime.voicekullanır.voice.mode, konuşma yolunu kontrol eder. Varsayılanagent-proxydeğeridir: bir realtime ses ön ucu sıra zamanlamasını, kesintiyi ve oynatmayı yönetir, asıl işiopenclaw_agent_consultüzerinden yönlendirilen OpenClaw ajanına devreder ve sonucu o konuşmacıdan gelen yazılı bir Discord istemi gibi ele alır.stt-tts, eski toplu STT artı TTS akışını korur.bidi, OpenClaw beyni içinopenclaw_agent_consultsunarken realtime modelin doğrudan sohbet etmesine izin verir.voice.agentSession, ses sıralarını hangi OpenClaw konuşmasının alacağını kontrol eder. Ses kanalının kendi oturumu için ayarsız bırakın veya ses kanalının#maintainersgibi mevcut bir Discord metin kanalı oturumunun mikrofon/hoparlör uzantısı gibi davranmasını sağlamak için{ mode: "target", target: "channel:<text-channel-id>" }olarak ayarlayın.voice.model, Discord ses yanıtları ve realtime danışmaları için OpenClaw ajan beynini geçersiz kılar. Yönlendirilen ajan modelini devralmak için ayarsız bırakın.voice.realtime.modeldeğerinden ayrıdır.agent-proxy, konuşmayıdiscord-voiceüzerinden yönlendirir; bu, konuşmacı ve hedef oturum için normal sahip/araç yetkilendirmesini korur ancak Discord ses oynatmayı üstlendiği için ajanınttsaracını gizler. Varsayılan olarakagent-proxy, sahip konuşmacılar için danışmaya tam sahip eşdeğeri araç erişimi verir (voice.realtime.toolPolicy: "owner") ve asıl yanıtlardan önce OpenClaw ajanına danışmayı güçlü biçimde tercih eder (voice.realtime.consultPolicy: "always"). Bu varsayılanalwaysmodunda realtime katmanı danışma yanıtından önce otomatik olarak dolgu konuşması yapmaz; konuşmayı yakalar ve yazıya döker, ardından yönlendirilen OpenClaw yanıtını seslendirir. Discord ilk yanıtı hâlâ oynatırken birden fazla zorunlu danışma yanıtı tamamlanırsa, sonraki birebir konuşma yanıtları konuşmayı cümlenin ortasında değiştirmek yerine oynatma boşa çıkana kadar kuyruğa alınır.stt-ttsmodunda STT,tools.media.audiokullanır;voice.modelyazıya dökmeyi etkilemez.- Realtime modlarında
voice.realtime.provider,voice.realtime.modelvevoice.realtime.voice, realtime ses oturumunu yapılandırır. OpenAI Realtime 2 ve Codex beyni içinvoice.realtime.model: "gpt-realtime-2"vevoice.model: "openai-codex/gpt-5.5"kullanın. - OpenAI realtime sağlayıcısı, geçerli Realtime 2 olay adlarını ve çıktı sesi ile transkript olayları için eski Codex uyumlu takma adları kabul eder; böylece uyumlu sağlayıcı anlık görüntüleri asistan sesini düşürmeden kayabilir.
voice.realtime.bargeIn, Discord konuşmacı başlama olaylarının etkin realtime oynatmayı kesip kesmeyeceğini kontrol eder. Ayarsızsa realtime sağlayıcının giriş-sesi kesinti ayarını izler.voice.realtime.minBargeInAudioEndMs, bir OpenAI realtime araya girme işlemi sesi kısaltmadan önceki minimum asistan oynatma süresini kontrol eder. Varsayılan:250. Düşük yankılı odalarda anında kesinti için0ayarlayın veya yankısı yoğun hoparlör kurulumları için yükseltin.- Discord oynatmada OpenAI sesi için
voice.tts.provider: "openai"ayarlayın vevoice.tts.openai.voiceya davoice.tts.providers.openai.voicealtında bir Text-to-speech sesi seçin.cedar, geçerli OpenAI TTS modelinde erkeksi tınlayan iyi bir seçimdir. - Kanal başına Discord
systemPromptgeçersiz kılmaları, o ses kanalı için ses transkripti sıralarına uygulanır. - Ses transkripti sıraları sahip durumunu Discord
allowFrom(veyadm.allowFrom) üzerinden türetir; sahip olmayan konuşmacılar yalnızca sahiplere açık araçlara erişemez (örneğingatewayvecron). - Discord sesi, yalnızca metin yapılandırmaları için isteğe bağlıdır;
/vckomutlarını, ses çalışma zamanını veGuildVoiceStatesGateway intent’ini etkinleştirmek içinchannels.discord.voice.enabled=trueayarlayın (veya mevcut birchannels.discord.voicebloğunu koruyun). channels.discord.intents.voiceStates, ses durumu intent aboneliğini açıkça geçersiz kılabilir. Intent’in etkili ses etkinleştirmesini izlemesi için ayarsız bırakın.voice.autoJoinaynı guild için birden fazla giriş içeriyorsa OpenClaw, o guild için son yapılandırılan kanala katılır.voice.allowedChannels, isteğe bağlı bir ikamet izin listesidir./vc joinkomutunun yetkili herhangi bir Discord ses kanalına girmesine izin vermek için ayarsız bırakın. Ayarlandığında/vc join, başlangıçta otomatik katılma ve bot ses durumu taşımaları listelenen{ guildId, channelId }girişleriyle sınırlanır. Tüm Discord ses katılımlarını reddetmek için boş diziye ayarlayın. Discord botu izin listesinin dışına taşırsa OpenClaw o kanaldan ayrılır ve kullanılabilir olduğunda yapılandırılmış otomatik katılma hedefine yeniden katılır.voice.daveEncryptionvevoice.decryptionFailureTolerance,@discordjs/voicekatılma seçeneklerine aktarılır.- Ayarsızsa
@discordjs/voicevarsayılanlarıdaveEncryption=truevedecryptionFailureTolerance=24değerleridir. - OpenClaw, Discord ses alımı için varsayılan olarak saf JS
opusscriptçözücüsünü kullanır. İsteğe bağlı yerel@discordjs/opuspaketi repo pnpm kurulum politikası tarafından yok sayılır; böylece normal kurulumlar, Docker hatları ve ilgisiz testler yerel bir eklenti derlemez. Özel ses performansı ana makineleri, yerel eklentiyi kurduktan sonraOPENCLAW_DISCORD_OPUS_DECODER=nativeile bunu seçebilir. voice.connectTimeoutMs,/vc joinve otomatik katılma denemeleri için ilk@discordjs/voiceReady beklemesini kontrol eder. Varsayılan:30000.voice.reconnectGraceMs, OpenClaw’ın bağlantısı kesilmiş bir ses oturumunu yok etmeden önce yeniden bağlanmaya başlamasını ne kadar bekleyeceğini kontrol eder. Varsayılan:15000.stt-ttsmodunda, başka bir kullanıcı konuşmaya başladı diye ses oynatma durmaz. Geri besleme döngülerini önlemek için OpenClaw, TTS oynatılırken yeni ses yakalamayı yok sayar; sonraki sıra için oynatma bittikten sonra konuşun. Realtime modları konuşmacı başlangıçlarını araya girme sinyalleri olarak realtime sağlayıcıya iletir.- Realtime modlarında, hoparlörlerden açık mikrofona gelen yankı araya girme gibi görünebilir ve oynatmayı kesebilir. Yankısı yoğun Discord odalarında OpenAI’nin giriş sesiyle otomatik kesinti yapmasını engellemek için
voice.realtime.providers.openai.interruptResponseOnInputAudio: falseayarlayın. Discord konuşmacı başlama olaylarının etkin oynatmayı kesmesini hâlâ istiyorsanızvoice.realtime.bargeIn: trueekleyin. OpenAI realtime köprüsü,voice.realtime.minBargeInAudioEndMsdeğerinden kısa oynatma kısaltmalarını olası yankı/gürültü olarak yok sayar ve Discord oynatmasını temizlemek yerine atlandı olarak günlüğe kaydeder. voice.captureSilenceGraceMs, Discord bir konuşmacının durduğunu bildirdikten sonra OpenClaw’ın o ses segmentini STT için sonlandırmadan önce ne kadar bekleyeceğini kontrol eder. Varsayılan:2500; Discord normal duraklamaları kesik kesik kısmi transkriptlere bölüyorsa bunu yükseltin.- ElevenLabs seçili TTS sağlayıcısı olduğunda Discord ses oynatma, streaming TTS kullanır ve sağlayıcı yanıt akışından başlar. Streaming desteği olmayan sağlayıcılar sentezlenmiş geçici dosya yoluna geri döner.
- OpenClaw ayrıca alma şifre çözme hatalarını izler ve kısa bir zaman aralığında tekrarlanan hatalardan sonra ses kanalından ayrılıp yeniden katılarak otomatik kurtarma yapar.
- Güncellemeden sonra alma günlükleri tekrar tekrar
DecryptionFailed(UnencryptedWhenPassthroughDisabled)gösteriyorsa bir bağımlılık raporu ve günlükler toplayın. Paketlenen@discordjs/voicehattı, discord.js PR #11449’dan gelen upstream padding düzeltmesini içerir; bu düzeltme discord.js issue #11419’u kapatmıştır. The operation was abortedalma olayları, OpenClaw yakalanmış bir konuşmacı segmentini sonlandırdığında beklenir; bunlar ayrıntılı tanılardır, uyarı değildir.- Ayrıntılı Discord ses günlükleri, kabul edilen her konuşmacı segmenti için sınırlandırılmış tek satırlık bir STT transkript önizlemesi içerir; böylece hata ayıklama, sınırsız transkript metni dökmeden hem kullanıcı tarafını hem de ajan yanıt tarafını gösterir.
agent-proxymodunda zorunlu danışma geri dönüşü,...ile biten metin veyaandgibi sondaki bağlaçlar dahil muhtemelen eksik transkript parçalarını ve “be right back” ya da “bye” gibi açıkça eyleme geçirilemeyen kapanışları atlar. Bu, eski bir kuyruklanmış yanıtı önlediğinde günlüklerforced agent consult skipped reason=...gösterir.
node-gyp kaynak derleme araç zincirine ihtiyacı olabilir.
Yerel eklentiyi kurduktan sonra Gateway’i şununla başlatın:
discord voice: opus decoder: @discordjs/opus göstermelidir. Env seçimi olmadan veya yerel eklenti eksikse ya da ana makinede yüklenemiyorsa OpenClaw discord voice: opus decoder: opusscript günlüğünü yazar ve saf JS geri dönüşü üzerinden ses almaya devam eder.
STT artı TTS pipeline’ı:
- Discord PCM yakalaması bir WAV geçici dosyasına dönüştürülür.
tools.media.audio, STT’yi işler; örneğinopenai/gpt-4o-mini-transcribe.- Transkript, Discord girişi ve yönlendirmesi üzerinden gönderilir; yanıt LLM’i ise ajanın
ttsaracını gizleyen ve döndürülen metni isteyen bir ses-çıkışı politikasıyla çalışır, çünkü son TTS oynatmayı Discord sesi üstlenir. voice.modelayarlandığında, yalnızca bu ses kanalı sırası için yanıt LLM’ini geçersiz kılar.voice.tts,messages.ttsüzerine birleştirilir; streaming yeteneği olan sağlayıcılar oynatıcıyı doğrudan besler, aksi halde ortaya çıkan ses dosyası katılınan kanalda oynatılır.
voice.agentSession bloğu olmadığında her ses kanalı kendi yönlendirilmiş OpenClaw oturumunu alır. Örneğin /vc join channel:234567890123456789, o Discord ses kanalının oturumuyla konuşur. Realtime model yalnızca ses ön ucudur; asıl istekler yapılandırılmış OpenClaw ajanına aktarılır. Realtime model danışma aracını çağırmadan nihai bir transkript üretirse OpenClaw, varsayılanın hâlâ ajanla konuşmak gibi davranması için danışmayı geri dönüş olarak zorlar.
Eski STT artı TTS örneği:
agent-proxy modunda bot yapılandırılmış ses kanalına katılır, ancak OpenClaw ajan sıraları hedef kanalın normal yönlendirilmiş oturumunu ve ajanını kullanır. Realtime ses oturumu döndürülen sonucu ses kanalına geri seslendirir. Supervisor ajan, doğru eylem buysa ayrı bir Discord mesajı göndermek dahil olmak üzere araç politikasına göre normal mesaj araçlarını hâlâ kullanabilir.
Yararlı hedef biçimleri:
target: "channel:123456789012345678", bir Discord metin kanalı oturumu üzerinden yönlendirir.target: "123456789012345678", kanal hedefi olarak ele alınır.target: "dm:123456789012345678"veyatarget: "user:123456789012345678", o doğrudan mesaj oturumu üzerinden yönlendirir.
bargeIn: true Discord konuşmacı başlatma olaylarının ve zaten etkin olan konuşmacı sesinin, bir sonraki yakalanan sıra OpenAI’a ulaşmadan önce etkin realtime yanıtlarını iptal etmesine izin verir. audioEndMs değeri minBargeInAudioEndMs altında olan çok erken araya girme sinyalleri olası yankı/gürültü olarak değerlendirilir ve yok sayılır; böylece model ilk oynatma karesinde kesilmez.
Beklenen ses günlükleri:
- Katılımda:
discord voice: joining ... voiceSession=... supervisorSession=... agentSessionMode=... voiceModel=... realtimeModel=... - Realtime başlangıcında:
discord voice: realtime bridge starting ... autoRespond=false interruptResponse=false bargeIn=false minBargeInAudioEndMs=... - Konuşmacı sesinde:
discord voice: realtime speaker turn opened ...,discord voice: realtime input audio started ... outputAudioMs=... outputActive=...vediscord voice: realtime speaker turn closed ... chunks=... discordBytes=... realtimeBytes=... interruptedPlayback=... - Eski konuşma atlandığında:
discord voice: realtime forced agent consult skipped reason=incomplete-transcript ...veyareason=non-actionable-closing ... - Realtime yanıtı tamamlandığında:
discord voice: realtime audio playback finishing reason=response.done ... audioMs=... chunks=... - Oynatma durduğunda/sıfırlandığında:
discord voice: realtime audio playback stopped reason=... audioMs=... elapsedMs=... chunks=... - Realtime danışmada:
discord voice: realtime consult requested ... voiceSession=... supervisorSession=... question=... - Agent yanıtında:
discord voice: agent turn answer ... - Kuyruğa alınan tam konuşmada:
discord voice: realtime exact speech queued ... queued=... outputAudioMs=... outputActive=..., ardındandiscord voice: realtime exact speech dequeued reason=player-idle ... - Araya girme algılandığında:
discord voice: realtime barge-in detected source=speaker-start ...veyadiscord voice: realtime barge-in detected source=active-speaker-audio ..., ardındandiscord voice: realtime barge-in requested reason=... outputAudioMs=... outputActive=... - Realtime kesintisinde:
discord voice: realtime model interrupt requested client:response.cancel reason=barge-in, ardındandiscord voice: realtime model audio truncated client:conversation.item.truncate reason=barge-in audioEndMs=...veyadiscord voice: realtime model interrupt confirmed server:response.done status=cancelled ... - Yok sayılan yankı/gürültüde:
discord voice: realtime model interrupt ignored client:conversation.item.truncate.skipped reason=barge-in audioEndMs=0 minAudioEndMs=250 - Araya girme devre dışı olduğunda:
discord voice: realtime capture ignored during playback (barge-in disabled) ... - Boştaki oynatmada:
discord voice: realtime barge-in ignored reason=... outputActive=false ... playbackChunks=0
realtime audio playback started, Discord’un asistan sesini oynatmaya başladığı anlamına gelir. Bridge, bu noktadan itibaren asistan çıktı parçalarını, Discord PCM baytlarını, sağlayıcı realtime baytlarını ve sentezlenen ses süresini saymaya başlar.realtime speaker turn opened, bir Discord konuşmacısının etkin hale geldiğini belirtir. Oynatma zaten etkinse vebargeInetkinleştirilmişse, bunubarge-in detected source=speaker-startizleyebilir.realtime input audio started, o konuşmacı sırası için alınan ilk gerçek ses karesini belirtir. BuradaoutputActive=trueveya sıfır olmayan biroutputAudioMs, mikrofonun asistan oynatımı hâlâ etkinken giriş gönderdiği anlamına gelir.barge-in detected source=active-speaker-audio, OpenClaw’un asistan oynatımı etkinken canlı konuşmacı sesi gördüğü anlamına gelir. Bu, gerçek bir kesintiyi işe yarar ses içermeyen bir Discord konuşmacı başlatma olayından ayırmak için yararlıdır.barge-in requested reason=..., OpenClaw’un realtime sağlayıcıdan etkin yanıtı iptal etmesini veya kesmesini istediği anlamına gelir. Kesintiden önce gerçekte ne kadar asistan sesi oynatıldığını görebilmeniz içinoutputAudioMs,outputActiveveplaybackChunksiçerir.realtime audio playback stopped reason=..., yerel Discord oynatma sıfırlama noktasıdır. Neden, oynatmayı kimin durdurduğunu söyler:barge-in,player-idle,provider-clear-audio,forced-agent-consult,stream-closeveyasession-close.realtime speaker turn closed, yakalanan giriş sırasını özetler.chunks=0veyahasAudio=false, konuşmacı sırasının açıldığını ama realtime bridge’e kullanılabilir ses ulaşmadığını gösterir.interruptedPlayback=true, bu giriş sırasının asistan çıktısıyla çakıştığını ve araya girme mantığını tetiklediğini gösterir.
outputAudioMs: günlük satırından önce realtime sağlayıcı tarafından üretilen asistan ses süresi.audioMs: oynatma durmadan önce OpenClaw’un saydığı asistan ses süresi.elapsedMs: oynatma akışının veya konuşmacı sırasının açılması ile kapanması arasındaki duvar saati süresi.discordBytes: Discord voice’a gönderilen veya Discord voice’tan alınan 48 kHz stereo PCM baytları.realtimeBytes: realtime sağlayıcıya gönderilen veya sağlayıcıdan alınan sağlayıcı formatındaki PCM baytları.playbackChunks: etkin yanıt için Discord’a iletilen asistan ses parçaları.sinceLastAudioMs: yakalanan son konuşmacı ses karesi ile konuşmacı sırasının kapanması arasındaki boşluk.
source=active-speaker-audio, küçükoutputAudioMsve yakında aynı kullanıcı ile anında kesilme, genellikle hoparlör yankısının mikrofona girdiğini gösterir.voice.realtime.minBargeInAudioEndMsdeğerini yükseltin, hoparlör sesini azaltın, kulaklık kullanın veyavoice.realtime.providers.openai.interruptResponseOnInputAudio: falseayarlayın.source=speaker-startardındanspeaker turn closed ... hasAudio=false, Discord’un bir konuşmacı başlangıcı bildirdiği ancak OpenClaw’a ses ulaşmadığı anlamına gelir. Bu geçici bir Discord voice olayı, gürültü kapısı davranışı veya istemcinin mikrofonu kısa süreliğine tetiklemesi olabilir.- Yakınında araya girme veya
provider-clear-audioolmadanaudio playback stopped reason=stream-close, yerel Discord oynatma akışının beklenmedik şekilde sona erdiği anlamına gelir. Öncesindeki sağlayıcı ve Discord oynatıcı günlüklerini kontrol edin. capture ignored during playback (barge-in disabled), OpenClaw’un asistan sesi etkinken girişi bilerek attığı anlamına gelir. Konuşmanın oynatmayı kesmesini istiyorsanızvoice.realtime.bargeInseçeneğini etkinleştirin.barge-in ignored ... outputActive=false, Discord veya sağlayıcı VAD’nin konuşma bildirdiği ama OpenClaw’un kesilecek etkin oynatması olmadığı anlamına gelir. Bu, sesi kesmemelidir.
voice.model için LLM rota kimlik doğrulaması, tools.media.audio için STT kimlik doğrulaması, messages.tts/voice.tts için TTS kimlik doğrulaması ve voice.realtime.providers veya sağlayıcının normal kimlik doğrulama yapılandırması için realtime sağlayıcı kimlik doğrulaması.
Sesli mesajlar
Discord sesli mesajları bir dalga formu önizlemesi gösterir ve OGG/Opus ses gerektirir. OpenClaw dalga formunu otomatik olarak üretir, ancak incelemek ve dönüştürmek için gateway ana makinesindeffmpeg ve ffprobe gerekir.
- Bir yerel dosya yolu sağlayın (URL’ler reddedilir).
- Metin içeriğini atlayın (Discord aynı payload içinde metin + sesli mesajı reddeder).
- Herhangi bir ses formatı kabul edilir; OpenClaw gerektiğinde OGG/Opus’a dönüştürür.
Sorun giderme
Used disallowed intents or bot sees no guild messages
Used disallowed intents or bot sees no guild messages
- Message Content Intent’i etkinleştirin
- kullanıcı/üye çözümlemesine bağlı olduğunuzda Server Members Intent’i etkinleştirin
- intent’leri değiştirdikten sonra gateway’i yeniden başlatın
Guild messages blocked unexpectedly
Guild messages blocked unexpectedly
groupPolicydeğerini doğrulayınchannels.discord.guildsaltındaki guild izin listesini doğrulayın- guild
channelsharitası varsa, yalnızca listelenen kanallara izin verilir requireMentiondavranışını ve bahsetme örüntülerini doğrulayın
Require mention false but still blocked
Require mention false but still blocked
- eşleşen guild/kanal izin listesi olmadan
groupPolicy="allowlist" requireMentionyanlış yerde yapılandırılmış (mutlakachannels.discord.guildsveya kanal girdisi altında olmalıdır)- gönderen, guild/kanal
usersizin listesi tarafından engellenmiş
Long-running Discord turns or duplicate replies
Long-running Discord turns or duplicate replies
Slow listener detected ...stuck session: sessionKey=agent:...:discord:... state=processing ...
- tek hesap:
channels.discord.eventQueue.listenerTimeout - çoklu hesap:
channels.discord.accounts.<accountId>.eventQueue.listenerTimeout - bu yalnızca Discord gateway dinleyici işini denetler, agent sıra ömrünü değil
Gateway metadata lookup timeout warnings
Gateway metadata lookup timeout warnings
/gateway/bot metadata bilgisini alır. Geçici arızalar Discord’un varsayılan gateway URL’sine geri döner ve günlüklerde hız sınırlamasına tabidir.Metadata zaman aşımı ayarları:- tek hesap:
channels.discord.gatewayInfoTimeoutMs - çoklu hesap:
channels.discord.accounts.<accountId>.gatewayInfoTimeoutMs - yapılandırma ayarlanmamışsa env geri dönüşü:
OPENCLAW_DISCORD_GATEWAY_INFO_TIMEOUT_MS - varsayılan:
30000(30 saniye), en fazla:120000
Gateway READY timeout restarts
Gateway READY timeout restarts
READY olayını bekler. Başlangıç geciktirmeli çoklu hesap kurulumları, varsayılandan daha uzun bir başlangıç READY penceresine ihtiyaç duyabilir.READY zaman aşımı ayarları:- başlangıç tek hesap:
channels.discord.gatewayReadyTimeoutMs - başlangıç çoklu hesap:
channels.discord.accounts.<accountId>.gatewayReadyTimeoutMs - yapılandırma ayarlanmamışsa başlangıç env geri dönüşü:
OPENCLAW_DISCORD_READY_TIMEOUT_MS - başlangıç varsayılanı:
15000(15 saniye), en fazla:120000 - runtime tek hesap:
channels.discord.gatewayRuntimeReadyTimeoutMs - runtime çoklu hesap:
channels.discord.accounts.<accountId>.gatewayRuntimeReadyTimeoutMs - yapılandırma ayarlanmamışsa runtime env geri dönüşü:
OPENCLAW_DISCORD_RUNTIME_READY_TIMEOUT_MS - runtime varsayılanı:
30000(30 saniye), en fazla:120000
Permissions audit mismatches
Permissions audit mismatches
channels status --probe izin kontrolleri yalnızca sayısal kanal kimlikleriyle çalışır.Slug anahtarları kullanıyorsanız, runtime eşleştirmesi yine de çalışabilir, ancak probe izinleri tam olarak doğrulayamaz.DM and pairing issues
DM and pairing issues
- 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
Bot to bot loops
Bot to bot loops
channels.discord.allowBots=true ayarlarsanız döngü davranışından kaçınmak için katı bahsetme ve izin listesi kuralları kullanın.
Yalnızca botu etiketleyen bot mesajlarını kabul etmek için channels.discord.allowBots="mentions" tercih edin.Voice STT drops with DecryptionFailed(...)
Voice STT drops with DecryptionFailed(...)
- Discord ses alma kurtarma mantığının mevcut olması için OpenClaw’ı güncel tutun (
openclaw update) channels.discord.voice.daveEncryption=truedeğerini doğrulayın (varsayılan)channels.discord.voice.decryptionFailureTolerance=24ile başlayın (upstream varsayılanı) 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ılımdan sonra hatalar devam ederse günlükleri toplayın ve discord.js #11419 ile discord.js #11449 içindeki upstream DAVE alma geçmişiyle karşılaştırın
Yapılandırma referansı
Birincil referans: Yapılandırma referansı - Discord.High-signal Discord fields
High-signal Discord fields
- başlatma/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(dinleyici bütçesi),eventQueue.maxQueueSize,eventQueue.maxConcurrency - gateway:
gatewayInfoTimeoutMs,gatewayReadyTimeoutMs,gatewayRuntimeReadyTimeoutMs - yanıt/geçmiş:
replyToMode,historyLimit,dmHistoryLimit,dms.*.historyLimit - teslim:
textChunkLimit,chunkMode,maxLinesPerMessage - streaming:
streaming(eski diğer ad:streamMode),streaming.preview.toolProgress,draftChunk,blockStreaming,blockStreamingCoalesce - medya/yeniden deneme:
mediaMaxMb(giden Discord yüklemelerini sınırlar, varsayılan100MB),retry - eylemler:
actions.* - varlık:
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ı sır olarak ele alın (denetimli ortamlarda
DISCORD_BOT_TOKENtercih edilir). - En az ayrıcalıklı Discord izinleri verin.
- Komut dağıtımı/durumu güncel değilse gateway’i yeniden başlatın ve
openclaw channels status --probeile yeniden kontrol edin.