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 yoksa, önce bir tane oluşturun (Kendim İçin Oluştur > Ben ve arkadaşlarım için seçeneğini seçin).Bir Discord uygulaması ve bot oluşturun
Ayrıcalıklı intent'leri etkinleştirin
- Mesaj İçeriği Intent’i (gerekli)
- Sunucu Üyeleri Intent’i (önerilir; rol izin listeleri ve addan ID’ye eşleştirme için gereklidir)
- Varlık Intent’i (isteğe bağlı; yalnızca varlık 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
- 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
- Kullanıcı Ayarları’na tıklayın (avatarınızın yanındaki dişli simgesi) → Kenar çubuğunda Geliştirici bölümüne kaydırın → Geliştirici Modu’nu açın (Not: Discord mobil uygulamasında Geliştirici Modu, Uygulama Ayarları → Gelişmiş altındadır)
- Kenar çubuğunda sunucu simgenize sağ tıklayın → Sunucu ID’sini Kopyala
- Kendi avatarınıza sağ tıklayın → Kullanıcı ID’sini Kopyala
Sunucu üyelerinden 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.
Yönetilen hizmet kurulumları için, DISCORD_BOT_TOKEN mevcut olan bir shell’den openclaw gateway install çalıştırın veya değişkeni ~/.openclaw/.env içinde saklayın; böylece hizmet yeniden başlatmadan sonra env SecretRef değerini çözebilir.
Host’unuz Discord’un başlangıç uygulaması araması tarafından engelleniyorsa veya hız sınırlaması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, birden fazla Discord botu çalıştırdığınızda ise channels.discord.accounts.<accountId>.applicationId kullanın.OpenClaw'ı yapılandırın ve eşleştirin
- Ajanınıza sorun
- CLI / config
“Discord bot token’ımı config içinde zaten ayarladım. Lütfen Discord kurulumunu User ID<user_id>ve Server ID<server_id>ile 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.
Etkinleştirilmiş iki Discord hesabı aynı bot token’ına çözülürse, OpenClaw bu token için yalnızca bir gateway izleyicisi başlatır. Config kaynaklı token varsayılan env fallback’e göre önceliklidir; aksi durumda ilk etkin hesap kazanır ve yinelenen hesap devre dışı olarak raporlanır.
Gelişmiş giden çağrılar (mesaj aracı/kanal eylemleri) için, açık bir çağrı başına token o çağrıda 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ı hâlâ etkin runtime anlık görüntüsünde seçilen hesaptan gelir.Önerilir: 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
- Config
“Discord Server ID <server_id> değerimi guild izin listesine ekle”
@mention olmadan yanıtlara izin verin
messages.groupChat.visibleReplies: "message_tool" seçeneğini etkinleştirin; böylece ajan dinlemede kalabilir ve yalnızca kanal yanıtının yararlı olduğuna karar verdiğinde gönderi paylaşır. Bu, GPT 5.5 gibi en yeni nesil, araç güvenilirliği yüksek modellerle en iyi çalışır. Ortam oda olayları, araç göndermedikçe sessiz kalır. Tam dinleme modu config’i için Ortam oda olayları sayfasına bakın.Discord yazıyor gösteriyor ve log’lar token kullanımını gösteriyor ancak gönderilmiş mesaj yoksa, turn’ün bir ortam oda olayı olarak yapılandırılıp yapılandırılmadığını veya mesaj aracı görünür yanıtlarının etkinleştirilip etkinleştirilmediğini kontrol edin.- Ajanınıza sorun
- Config
“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
- Manuel
“Discord kanallarında soru sorduğumda, MEMORY.md içinden uzun vadeli bağlama ihtiyacın olursa memory_search veya memory_get kullan.”
#coding, #home, #research veya iş akışınıza uyan herhangi bir şeyi kurabilirsiniz.
Runtime modeli
- Gateway, Discord bağlantısının sahibidir.
- Yanıt yönlendirmesi deterministiktir: Discord’dan gelen yanıtlar Discord’a geri döner.
- Discord sunucu/kanal meta verileri, kullanıcıya görünen bir yanıt öneki 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 agent 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önlendirilen konuşma oturumunaCommandTargetSessionKeytaşımaya devam eder. - Discord’a metin tabanlı cron/heartbeat duyuru teslimi, son assistant tarafından görülebilen yanıtı bir kez kullanır. Medya ve yapılandırılmış bileşen yükleri, agent birden fazla teslim edilebilir yük yaydığında çok iletili kalır.
Forum kanalları
Discord forum ve medya kanalları yalnızca thread gönderilerini kabul eder. OpenClaw bunları oluşturmak için iki yolu destekler:- Otomatik thread oluşturmak için forum üst kanalına (
channel:<forumId>) bir ileti gönderin. Thread başlığı, iletinizin ilk boş olmayan satırını kullanır. - Doğrudan thread oluşturmak için
openclaw message thread createkullanın. Forum kanalları için--message-idgeçmeyin.
channel:<threadId>).
Etkileşimli bileşenler
OpenClaw, agent iletileri için Discord components v2 kapsayıcılarını destekler.components yüküyle message aracını kullanın. Etkileşim sonuçları agent’a normal gelen iletiler olarak 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çme menüsüne izin verir
- Seçme 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ı ID’leri, etiketleri veya *). Yapılandırıldığında, eşleşmeyen kullanıcılar geçici bir ret alır.
Bileşen geri çağrıları varsayılan olarak 30 dakika sonra sona erer. Varsayılan Discord hesabı için bu geri çağrı kayıt defteri ömrünü değiştirmek üzere channels.discord.agentComponents.ttlMs, çok hesaplı bir kurulumda bir hesabı geçersiz kılmak üzere channels.discord.accounts.<accountId>.agentComponents.ttlMs ayarlayın. Değer milisaniyedir, pozitif bir tam sayı olmalıdır ve 86400000 (24 saat) ile sınırlıdır. Daha uzun TTL’ler, düğmelerin kullanılabilir kalmasını gerektiren inceleme veya onay iş akışları için yararlıdır, ancak eski bir Discord iletisinin hâlâ bir eylemi tetikleyebileceği pencereyi de uzatır. İş akışına uyan en kısa TTL’yi tercih edin ve bayat geri çağrılar şaşırtıcı olacaksa varsayılanı koruyun.
/model ve /models slash komutları, sağlayıcı, model ve uyumlu runtime açılır menüleri ile 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 iletisi döndürür. Seçici yanıtı geçicidir ve yalnızca çağıran kullanıcı bunu kullanabilir. Discord seçme menüleri 25 seçenekle sınırlıdır; bu nedenle seçicinin dinamik olarak keşfedilen modelleri yalnızca openai 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 referansına işaret etmelidir (attachment://<filename>)- Eki
media/path/filePatharacılığıyla sağlayın (tek dosya); birden çok dosya içinmedia-gallerykullanın - Yükleme adı ek referansıyla 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 tetikleme 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.allowFromiçinde"*"bulunmasını gerektirir)disabled
pairing modunda eşleştirme için yönlendirilir).Çok hesaplı öncelik:channels.discord.accounts.default.allowFromyalnızcadefaulthesabına uygulanır.- Tek hesap için
allowFrom, eskidm.allowFromdeğerinden ö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.Teslimat için DM hedef biçimi:user:<id><@id>mention
allowFrom listesinde yer alan ID’ler uyumluluk için kullanıcı DM hedefleri olarak ele alınır.Role dayalı agent yönlendirmesi
bindings[].match.roles kullanarak Discord sunucu üyelerini rol kimliğine göre farklı aracılara yönlendirin. Rol tabanlı bağlamalar yalnızca rol kimliklerini kabul eder ve eş ya da üst-eş bağlamalarından 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 sahiptir 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 slash 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 ileti 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ı zorunlu kılar 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ığını devre dışı bırakır. Açık [[reply_to_*]] etiketleri yine de dikkate alınır.
first, dönüş için ilk giden Discord iletisine örtük yerel yanıt referansını her zaman ekler.
batched, Discord’un örtük yerel yanıt referansını yalnızca gelen olay
birden çok iletiden oluşan debounce uygulanmış bir toplu işlem olduğunda ekler. Bu,
yerel yanıtları her tek iletili dönüş için değil, daha çok belirsiz ve yoğun sohbet patlamaları için
istediğinizde kullanışlıdır.İleti kimlikleri bağlam/geçmiş içinde gösterilir, böylece aracılar belirli iletileri hedefleyebilir.Bağlantı önizlemeleri
Bağlantı önizlemeleri
channels.discord.accounts.<id>.suppressEmbeds ayarlayın. Aracı ileti aracı gönderimleri de tek bir ileti için suppressEmbeds: false iletebilir. Açık Discord embeds yükleri, varsayılan bağlantı önizleme ayarı tarafından bastırılmaz.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 son teslimata kadar araç ilerlemesiyle günceller; paylaşılan başlangıç etiketi kayan bir satırdır, bu yüzden yeterince iş göründüğünde diğerleri gibi ekrandan kayar. streamMode eski bir çalışma zamanı takma adıdır. Kalıcı yapılandırmayı kanonik anahtara yeniden yazmak için openclaw doctor --fix ç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, token’lar geldikçe tek bir önizleme iletisini düzenler.block, taslak boyutunda parçalar yayar (boyutu ve kesme noktalarını ayarlamak içindraftChunkkullanın;textChunkLimitile sınırlandırılır).- Medya, hata ve açık yanıt finalleri bekleyen önizleme düzenlemelerini iptal eder.
streaming.preview.toolProgress(varsayılantrue), araç/ilerleme güncellemelerinin önizleme iletisini yeniden kullanıp kullanmayacağını denetler.- Araç/ilerleme satırları, mevcut olduğunda kompakt emoji + başlık + ayrıntı olarak işlenir; örneğin
🛠️ Bash: run testsveya🔎 Web Search: for "query". streaming.progress.commentary(varsayılanfalse), geçici ilerleme taslağında asistan yorum/açılış metnini etkinleştirir. Yorum görüntülenmeden önce temizlenir, geçici kalır ve son yanıt teslimatını değiştirmez.streaming.progress.maxLineChars, satır başına ilerleme önizleme bütçesini denetler. Düzyazı sözcük sınırlarında kısaltılır; komut ve yol ayrıntıları yararlı son ekleri korur.streaming.preview.commandText/streaming.progress.commandText, kompakt ilerleme satırlarındaki 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- geri dönüş:
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ı, model için yalnızca geri dönüş olarak üst kanalın oturum düzeyi
/modelseçimini devralır; iş parçacığına yerel/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ı etkinleştirir. Hesap başına geçersiz kılmalarchannels.discord.accounts.<id>.thread.inheritParentaltında bulunur.- İleti aracı tepkileri
user:<id>DM hedeflerini çözebilir. guilds.<guild>.channels.<channel>.requireMention: false, yanıt aşaması etkinleştirme geri dönüşü 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>geçerli/yeni iş parçacığını bir alt aracı/oturum hedefine bağla/unfocusgeçerli iş parçacığı bağlamasını kaldır/agentsetkin çalıştırmaları ve bağlama 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ı 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ığı oluşturma için iş parçacıklarının otomatik oluşturulmasını/bağlanmasını denetler. Varsayılan:true.defaultSpawnContext, iş parçacığına bağlı oluşturmalarda 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ğlamaları devre dışıysa
/focusve ilgili iş parçacığı 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, geçerli kanalı veya iş parçacığını yerinde bağlar ve gelecekteki iletileri aynı ACP oturumunda tutar. İş parçacığı iletileri üst kanal bağlaması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ğlamaları etkin oldukları sürece hedef çözümlemeyi geçersiz kılabilir. spawnSessions,--thread auto|hereüzerinden alt iş parçacığı oluşturma/bağlamayı kapılar.
Tepki bildirimleri
Tepki bildirimleri
offown(varsayılan)allallowlist(guilds.<id>.userskullanır)
Ack tepkileri
Ack tepkileri
ackReaction, OpenClaw gelen bir iletiyi işlerken bir onay emojisi gönderir.Çözümleme sırası:channels.discord.accounts.<accountId>.ackReactionchannels.discord.ackReactionmessages.ackReaction- aracı kimliği emojisi geri dönüşü (
agents.list[].identity.emoji, aksi halde ”👀”)
- Discord unicode emoji 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.
Discord Gateway WebSocket proxy kullanımı açıktır; WebSocket bağlantıları, Gateway sürecinden ortam proxy çevre değişkenlerini devralmaz. Başlangıç REST sorguları, channels.discord.proxy yapılandırıldığında bu proxy’yi kullanır.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 ileti kimliğini kullanır ve zaman penceresiyle sınırlandırılır
- arama başarısız olursa, proxy iletileri bot iletileri olarak ele alınır ve
allowBots=trueolmadığı sürece bırakılır
Giden bahsetme takma adları
Giden bahsetme takma adları
mentionAliases kullanın. Anahtarlar başındaki @ olmadan kullanıcılardır; değerler Discord kullanıcı kimlikleridir. Bilinmeyen kullanıcılar, @everyone, @here ve Markdown kod satır içi alanlarındaki bahsetmeler 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 state’i olarak kullanır; emoji isteğe bağlıdır)
- 5: Yarışıyor
autoPresence.healthyTextautoPresence.degradedTextautoPresence.exhaustedText({reason}yer tutucusunu destekler)
Discord'da onaylar
Discord'da onaylar
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 en az bir onaylayıcı execApprovals.approvers ya da commands.ownerAllowFrom üzerinden çözümlenebildiğinde yerel exec onaylarını otomatik etkinleştirir. Discord, exec onaylayıcılarını kanal allowFrom, eski dm.allowFrom veya doğrudan ileti defaultTo değerinden çıkarmaz. 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 grup komutları için OpenClaw, onay istemlerini ve nihai sonuçları özel olarak gönderir. Çağıran sahibin bir Discord sahip rotası olduğunda önce Discord DM’yi dener; bu mevcut değilse 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. Yalnızca çözümlenen onaylayıcılar düğmeleri 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üretilemiyorsa 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ı esas 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 yerel kart herhangi bir hedefe teslim edilemiyorsa OpenClaw,
bekleyen onaydan tam /approve komutunu içeren aynı sohbet yedek bildirimini 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 ileti eylemleri mesajlaşma, kanal yönetimi, moderasyon, presence ve metadata 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, zamanlanmış etkinlik kapak görselini ayarlamak için isteğe bağlı bir image parametresi (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şaretleyiciler için Discord components v2 kullanır. Discord ileti eylemleri özel UI içincomponents da kabul edebilir (ileri düzey; discord aracı üzerinden bir bileşen yükü oluşturmayı gerektirir), eski embeds kullanılabilir durumda kalsa da ö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. channels.discord.agentComponents.ttlMs, gönderilen Discord bileşen geri çağrılarının ne kadar süre kayıtlı kalacağını denetler (varsayılan1800000, maksimum86400000). Hesap başınachannels.discord.accounts.<id>.agentComponents.ttlMsile ayarlayın.- Components v2 mevcut olduğunda
embedsyok sayılır. - Düz URL önizlemeleri varsayılan olarak bastırılır. Tek bir giden bağlantının genişlemesi gerektiğinde ileti eyleminde
suppressEmbeds: falseayarlayın.
Ses
Discord’un iki ayrı ses yüzeyi vardır: gerçek zamanlı ses kanalları (sürekli konuşmalar) ve sesli ileti 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.voiceyapılandırmasını yapı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 oynatma içinmessages.ttsayarını geçersiz kılar. Realtime modlarıvoice.realtime.speakerVoicekullanır.voice.mode, konuşma yolunu denetler. Varsayılan değeragent-proxyşeklindedir: realtime ses ön ucu tur zamanlamasını, kesintiyi ve oynatmayı yönetir, esas işiopenclaw_agent_consultaracılığıyla 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 turlarını hangi OpenClaw konuşmasının alacağını denetler. Ses kanalının kendi oturumu için ayarlamadan 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 ayarlamadan bırakın. Bu,voice.realtime.modelayarından ayrıdır.voice.followUsers, botun seçili kullanıcılarla birlikte Discord sesine katılmasına, taşınmasına ve ayrılmasına izin verir. Davranış kuralları ve örnekler için bkz. Seste kullanıcıları takip et.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 oynatmaya sahip olduğu için ajanttsaracını gizler. Varsayılan olarakagent-proxy, sahip konuşmacılar için danışmaya sahip eşdeğeri tam araç erişimi verir (voice.realtime.toolPolicy: "owner") ve esas 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 dolgu konuşması yapmaz; konuşmayı yakalayıp yazıya döker, ardından yönlendirilen OpenClaw yanıtını konuşur. Discord ilk yanıtı hâlâ oynatırken birden fazla zorunlu danışma yanıtı biterse sonraki tam 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.speakerVoice, realtime ses oturumunu yapılandırır. OpenAI Realtime 2 artı Codex beyni içinvoice.realtime.model: "gpt-realtime-2"vevoice.model: "openai/gpt-5.5"kullanın. - Realtime ses modları, hızlı doğrudan turların yönlendirilen OpenClaw ajanıyla aynı kimliği, kullanıcı temellendirmesini ve personayı koruması için varsayılan olarak realtime sağlayıcı yönergelerine küçük
IDENTITY.md,USER.mdveSOUL.mdprofil dosyalarını ekler. Bunu özelleştirmek içinvoice.realtime.bootstrapContextFilesdeğerini bir alt kümeye, devre dışı bırakmak için[]değerine ayarlayın. Desteklenen realtime önyükleme dosyaları bu profil dosyalarıyla sınırlıdır;AGENTS.mdnormal ajan bağlamında kalır. Enjekte edilen profil bağlamı, çalışma alanı işi, güncel gerçekler, bellek araması veya araç destekli eylemler içinopenclaw_agent_consultyerine geçmez. - OpenAI
agent-proxyrealtime modunda, bir transkript bir uyandırma adıyla başlayana veya bitene kadar Discord realtime sesini sessiz tutmak içinvoice.realtime.requireWakeName: trueayarlayın. Yapılandırılan uyandırma adları bir veya iki kelime olmalıdır.voice.realtime.wakeNamesayarlanmamışsa OpenClaw, yönlendirilen ajannamedeğerini artıOpenClawkullanır; yoksa ajan kimliği artıOpenClawdeğerine geri döner. Uyandırma adı kapılaması realtime sağlayıcı otomatik yanıtını devre dışı bırakır, kabul edilen turları OpenClaw ajan danışma yolu üzerinden yönlendirir ve son transkript gelmeden önce kısmi yazıya dökümden baştaki bir uyandırma adı tanındığında kısa bir sözlü onay verir. - OpenAI realtime sağlayıcı, güncel Realtime 2 olay adlarını ve çıkış 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 farklılaşabilir.
voice.realtime.bargeIn, Discord konuşmacı başlama olaylarının etkin realtime oynatmayı kesip kesmeyeceğini denetler. Ayarlanmamışsa realtime sağlayıcının giriş sesi kesinti ayarını izler.voice.realtime.minBargeInAudioEndMs, OpenAI realtime araya girme sesi kesmeden önceki minimum asistan oynatma süresini denetler. Varsayılan:250. Düşük yankılı odalarda anında kesinti için0ayarlayın veya yoğun yankılı hoparlör kurulumları için yükseltin.- Discord oynatma üzerinde bir OpenAI sesi için
voice.tts.provider: "openai"ayarlayın vevoice.tts.providers.openai.speakerVoicealtında bir Text-to-speech sesi seçin.cedar, güncel OpenAI TTS modelinde erkeksi tınılı iyi bir seçimdir. - Kanal başına Discord
systemPromptgeçersiz kılmaları, o ses kanalı için ses transkripti turlarına uygulanır. - Ses transkripti turları, sahip kapılı komutlar ve kanal eylemleri için sahip durumunu Discord
allowFrom(veyadm.allowFrom) değerinden türetir. Ajan araç görünürlüğü, yönlendirilen oturum için yapılandırılan araç politikasını izler. - Discord sesi, yalnızca metin yapılandırmaları için isteğe bağlıdır;
/vckomutlarını, ses çalışma zamanını veGuildVoiceStatesGateway amacını etkinleştirmek içinchannels.discord.voice.enabled=trueayarlayın (veya mevcut birchannels.discord.voicebloğunu koruyun). channels.discord.intents.voiceStates, ses durumu amacı aboneliğini açıkça geçersiz kılabilir. Amacın etkin ses etkinleştirmesini izlemesi için ayarlamadan bırakın.voice.autoJoinaynı sunucu için birden fazla girdiye sahipse OpenClaw o sunucu için son yapılandırılan kanala katılır.voice.allowedChannelsisteğe bağlı bir ikamet izin listesidir./vc joinkomutunun yetkili herhangi bir Discord ses kanalına girmesine izin vermek için ayarlamadan bırakın. Ayarlandığında/vc join, başlangıçta otomatik katılma ve bot ses durumu taşımaları listelenen{ guildId, channelId }girdileriyle sınırlanır. Tüm Discord ses katılımlarını reddetmek için boş dizi olarak ayarlayın. Discord botu izin listesinin dışına taşırsa OpenClaw o kanaldan ayrılır ve uygun 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.- Ayarlanmamışsa
@discordjs/voicevarsayılanlarıdaveEncryption=truevedecryptionFailureTolerance=24şeklindedir. - OpenClaw, Discord ses alma ve realtime ham PCM oynatma için paketlenmiş
libopus-wasmcodec’ini kullanır. Sabitlenmiş bir libopus WebAssembly derlemesiyle gelir ve yerel opus eklentileri gerektirmez. voice.connectTimeoutMs,/vc joinve otomatik katılma denemeleri için ilk@discordjs/voiceReady beklemesini denetler. 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 denetler. Varsayılan:15000.stt-ttsmodunda ses oynatma, yalnızca başka bir kullanıcı konuşmaya başladı diye durmaz. Geri besleme döngülerini önlemek için OpenClaw, TTS oynatılırken yeni ses yakalamayı yok sayar; sonraki tur için oynatma bittikten sonra konuşun. Realtime modları, konuşmacı başlangıçlarını realtime sağlayıcıya araya girme sinyalleri olarak iletir.- Realtime modlarında hoparlörlerden açık mikrofona gelen yankı, araya girme gibi görünüp oynatmayı kesebilir. Yoğun yankılı Discord odalarında, OpenAI’ın giriş sesinde 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 kesmelerini olası yankı/gürültü olarak yok sayar ve Discord oynatmayı temizlemek yerine atlandı olarak günlüğe kaydeder. voice.captureSilenceGraceMs, Discord bir konuşmacının durduğunu bildirdikten sonra OpenClaw’ın bu ses segmentini STT için sonlandırmadan önce ne kadar bekleyeceğini denetler. Varsayılan:2000; Discord normal duraklamaları kesik kısmi transkriptlere bölüyorsa bunu yükseltin.- Seçili TTS sağlayıcısı ElevenLabs olduğunda, Discord ses oynatma akışlı TTS kullanır ve sağlayıcı yanıt akışından başlar. Akış 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 pencerede tekrarlanan hatalardan sonra ses kanalından ayrılıp yeniden katılarak otomatik kurtarır.
- 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. Paketlenmiş@discordjs/voicesatırı, discord.js PR #11449’dan gelen ve discord.js issue #11419’u kapatan yukarı akış dolgu düzeltmesini içerir. The operation was abortedalma olayları, OpenClaw yakalanan bir konuşmacı segmentini sonlandırdığında beklenir; bunlar uyarı değil, ayrıntılı tanılamalardır.- 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 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 sonda kalan bir bağlaç gibi muhtemelen eksik transkript parçalarını ve “be right back” ya da “bye” gibi açıkça eyleme dönük olmayan kapanışları atlar. Bu durum bayat kuyruk yanıtını engellediğinde günlüklerforced agent consult skipped reason=...gösterir.
Seste kullanıcıları takip et
Discord ses botunun başlangıçta sabit bir kanala katılmak veya/vc join beklemek yerine bir ya da daha fazla bilinen Discord kullanıcısıyla kalmasını istediğinizde voice.followUsers kullanın.
followUsers, ham Discord kullanıcı kimliklerini vediscord:<id>değerlerini kabul eder. OpenClaw, ses durumu olaylarını eşleştirmeden önce iki biçimi de normalleştirir.followUsersyapılandırıldığındafollowUsersEnabledvarsayılan olaraktrueolur. Kaydedilen listeyi koruyup otomatik ses takibini durdurmak içinfalseolarak ayarlayın.- Takip edilen bir kullanıcı izin verilen bir ses kanalına katıldığında OpenClaw o kanala katılır. Kullanıcı taşındığında OpenClaw onunla birlikte taşınır. Etkin takip edilen kullanıcı bağlantıyı kestiğinde OpenClaw ayrılır.
- Aynı sunucuda birden fazla takip edilen kullanıcı varsa ve etkin takip edilen kullanıcı ayrılırsa OpenClaw, sunucudan ayrılmadan önce izlenen başka bir takip edilen kullanıcının kanalına taşınır. Birkaç takip edilen kullanıcı aynı anda taşınırsa en son gözlemlenen ses durumu olayı kazanır.
allowedChannelsyine uygulanır. İzin verilmeyen bir kanaldaki takip edilen kullanıcı yok sayılır ve takip sahipli bir oturum başka bir takip edilen kullanıcıya taşınır veya ayrılır.- OpenClaw, başlangıçta ve sınırlandırılmış bir aralıkta kaçırılan ses durumu olaylarını uzlaştırır. Uzlaştırma yapılandırılmış sunucuları örnekler ve çalıştırma başına REST aramalarını sınırlar; bu nedenle çok büyük
followUserslistelerinin yakınsaması birden fazla aralık sürebilir. - Discord veya bir yönetici botu bir kullanıcıyı takip ederken taşırsa OpenClaw ses oturumunu yeniden oluşturur ve hedefe izin veriliyorsa takip sahipliğini korur. Bot
allowedChannelsdışına taşınırsa OpenClaw ayrılır ve varsa yapılandırılmış hedefe yeniden katılır. - DAVE alma kurtarması, tekrarlanan şifre çözme hatalarından sonra aynı kanaldan ayrılıp yeniden katılabilir. Takip sahipli oturumlar bu kurtarma yolunda takip sahipliğini korur; böylece daha sonra takip edilen kullanıcının bağlantıyı kesmesi yine kanaldan ayrılır.
- Botun siz sesteyken otomatik olarak seste olmasını istediğiniz kişisel veya operatör kurulumları için
followUserskullanın. - İzlenen hiçbir kullanıcı seste değilken bile bulunması gereken sabit oda botları için
autoJoinkullanın. - Tek seferlik katılımlar veya otomatik ses varlığının şaşırtıcı olacağı odalar için
/vc joinkullanın.
- Ses alma günlüklerinde
discord voice: opus decoder: libopus-wasmgörünür. - Gerçek zamanlı oynatma, paketleri
@discordjs/voiceöğesine vermeden önce ham 48 kHz stereo PCM’yi aynı paketlenmişlibopus-wasmpaketiyle Opus’a kodlar. - Dosya ve sağlayıcı akışı oynatma, ffmpeg ile ham 48 kHz stereo PCM’ye dönüştürür, ardından Discord’a gönderilen Opus paket akışı için
libopus-wasmkullanır.
- Discord PCM yakalaması geçici bir WAV dosyasına dönüştürülür.
tools.media.audio, örneğinopenai/gpt-4o-mini-transcribeile STT’yi işler.- Transkript, Discord girişi ve yönlendirme üzerinden gönderilir; yanıt LLM’si ise agent
ttsaracını gizleyen ve döndürülen metni isteyen bir ses çıkışı ilkesiyle çalışır, çünkü son TTS oynatmasının sahibi Discord sestir. voice.model, ayarlandığında yalnızca bu ses kanalı turu için yanıt LLM’sini geçersiz kılar.voice.tts,messages.ttsüzerine birleştirilir; akış destekli sağlayıcılar oynatıcıyı doğrudan besler, aksi takdirde oluşan ses dosyası katılınan kanalda oynatılır.
voice.agentSession bloğu olmadan her ses kanalı kendi yönlendirilmiş OpenClaw oturumunu alır. Örneğin, /vc join channel:234567890123456789 bu Discord ses kanalının oturumuyla konuşur. Gerçek zamanlı model yalnızca ses ön ucudur; anlamlı istekler yapılandırılmış OpenClaw agent öğesine aktarılır. Gerçek zamanlı model consult aracını çağırmadan son transkript üretirse, varsayılanın yine agent ile konuşuyormuş gibi davranması için OpenClaw consult işlemini yedek olarak zorunlu kılar.
Eski STT ve TTS örneği:
agent-proxy modunda bot yapılandırılmış ses kanalına katılır, ancak OpenClaw agent turları hedef kanalın normal yönlendirilmiş oturumunu ve agent öğesini kullanır. Gerçek zamanlı ses oturumu, döndürülen sonucu ses kanalına geri söyler. Gözetmen agent, doğru eylem buysa ayrı bir Discord mesajı göndermek dahil, araç ilkesine göre normal mesaj araçlarını kullanmaya devam edebilir.
Yetki verilmiş bir OpenClaw çalışması etkinken, yeni Discord ses transkriptleri başka bir agent turu başlatılmadan önce canlı çalışma kontrolü olarak ele alınır. “status”, “cancel that”, “use the smaller fix” veya “when you’re done also check tests” gibi ifadeler etkin oturum için durum, iptal, yönlendirme veya takip girdisi olarak sınıflandırılır. Durum, iptal, kabul edilen yönlendirme ve takip sonuçları ses kanalına geri söylenir; böylece arayan kişi OpenClaw’un isteği işleyip işlemediğini bilir.
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"ilgili doğrudan mesaj oturumu üzerinden yönlendirir.
bargeIn: true, Discord konuşmacı başlama olaylarının ve halihazırda etkin konuşmacı sesinin, bir sonraki yakalanan tur OpenAI’ye ulaşmadan önce etkin gerçek zamanlı yanıtları iptal etmesini sağlar. audioEndMs değeri minBargeInAudioEndMs altında olan çok erken araya girme sinyalleri muhtemel yankı/gürültü olarak ele alınır ve modelin ilk oynatma karesinde kesilmemesi için yok sayılır.
Beklenen ses günlükleri:
- Katılımda:
discord voice: joining ... voiceSession=... supervisorSession=... agentSessionMode=... voiceModel=... realtimeModel=... - Gerçek zamanlı başlatmada:
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 ... - Gerçek zamanlı 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=... - Gerçek zamanlı consult sırasında:
discord voice: realtime consult requested ... voiceSession=... supervisorSession=... question=... - Agent yanıtında:
discord voice: agent turn answer ... - Kuyruğa alınan bire bir 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=... - Gerçek zamanlı kesintide:
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=...ya dadiscord 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ışıyken:
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 assistant sesini oynatmaya başladığı anlamına gelir. Köprü bu noktadan itibaren assistant çıkış parçalarını, Discord PCM baytlarını, sağlayıcı gerçek zamanlı baytlarını ve sentezlenen ses süresini saymaya başlar.realtime speaker turn opened, bir Discord konuşmacısının etkinleştiğini belirtir. Oynatma zaten etkinse vebargeInetkinleştirilmişse, bunun ardındanbarge-in detected source=speaker-startgelebilir.realtime input audio started, bu konuşmacı turu için alınan ilk gerçek ses karesini belirtir. BuradaoutputActive=trueveya sıfır olmayan biroutputAudioMs, mikrofonun assistant oynatması hâlâ etkinken giriş gönderdiği anlamına gelir.barge-in detected source=active-speaker-audio, OpenClaw’un assistant oynatması etkinken canlı konuşmacı sesi gördüğü anlamına gelir. Bu, gerçek bir kesmeyi yararlı sesi olmayan bir Discord konuşmacı başlama olayından ayırt etmek için kullanışlıdır.barge-in requested reason=..., OpenClaw’un gerçek zamanlı sağlayıcıdan etkin yanıtı iptal etmesini veya kırpmasını istediği anlamına gelir. Kesinti öncesinde ne kadar assistant sesinin gerçekten oynatıldığını görebilmeniz içinoutputAudioMs,outputActiveveplaybackChunksiçerir.realtime audio playback stopped reason=...yerel Discord oynatma sıfırlama noktasıdır. Gerekçe oynatmayı kimin durdurduğunu söyler:barge-in,player-idle,provider-clear-audio,forced-agent-consult,stream-closeveyasession-close.realtime speaker turn closedyakalanan giriş turunu özetler.chunks=0veyahasAudio=false, konuşmacı turunun açıldığını ancak kullanılabilir sesin gerçek zamanlı köprüye ulaşmadığını gösterir.interruptedPlayback=true, bu giriş turunun assistant çıkışıyla çakıştığı ve araya girme mantığını tetiklediği anlamına gelir.
outputAudioMs: günlük satırından önce gerçek zamanlı sağlayıcı tarafından oluşturulan assistant ses süresi.audioMs: oynatma durmadan önce OpenClaw’un saydığı assistant ses süresi.elapsedMs: oynatma akışının veya konuşmacı turunun açılması ile kapanması arasındaki duvar saati süresi.discordBytes: Discord sesine gönderilen veya Discord sesinden alınan 48 kHz stereo PCM baytları.realtimeBytes: gerçek zamanlı sağlayıcıya gönderilen veya ondan alınan sağlayıcı biçimli PCM baytları.playbackChunks: etkin yanıt için Discord’a iletilen assistant ses parçaları.sinceLastAudioMs: son yakalanan konuşmacı ses karesi ile konuşmacı turunun kapanması arasındaki boşluk.
source=active-speaker-audio, küçükoutputAudioMsve yakında aynı kullanıcıyla anında kesilme, genellikle hoparlör yankısının mikrofona girdiğini gösterir.voice.realtime.minBargeInAudioEndMsdeğerini artırın, hoparlör sesini düşürü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 ses olayı, gürültü kapısı davranışı veya istemcinin mikrofonu kısa süreliğine tetiklemesi olabilir.- Yakında araya girme veya
provider-clear-audioolmadanaudio playback stopped reason=stream-close, yerel Discord oynatma akışının beklenmedik biçimde 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 assistant sesi etkinken girişi bilerek bıraktığı anlamına gelir. Konuşmanın oynatmayı kesmesini istiyorsanızvoice.realtime.bargeInöğesini etkinleştirin.barge-in ignored ... outputActive=false, Discord veya sağlayıcı VAD’nin konuşma bildirdiği, ancak OpenClaw’un kesecek 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 gerçek zamanlı sağlayıcı kimlik doğrulaması.
Sesli mesajlar
Discord sesli mesajları bir dalga biçimi önizlemesi gösterir ve OGG/Opus ses gerektirir. OpenClaw dalga biçimini otomatik oluşturur, ancak inceleme ve dönüştürme 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ı yükte metin + sesli mesajı reddeder).
- Herhangi bir ses biçimi kabul edilir; OpenClaw gerektiğinde OGG/Opus biçimine 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 bağlı olduğunuzda Server Members Intent’i etkinleştirin
- intent’leri değiştirdikten sonra gateway’i yeniden başlatın
Sunucu mesajları beklenmedik şekilde engellendi
Sunucu mesajları beklenmedik şekilde engellendi
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 kalıplarını doğrulayın
Mention gereksinimi false ama hâlâ engelleniyor
Mention gereksinimi false ama hâlâ engelleniyor
- eşleşen sunucu/kanal izin listesi olmadan
groupPolicy="allowlist" requireMentionyanlış yerde yapılandırılmış (channels.discord.guildsveya kanal girdisi altında olmalıdır)- gönderenin sunucu/kanal
usersizin listesi tarafından engellenmesi
Uzun süren Discord turları veya yinelenen yanıtlar
Uzun süren Discord turları veya yinelenen yanıtlar
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 kontrol eder, ajan turu ömrünü değil
Gateway meta veri arama zaman aşımı uyarıları
Gateway meta veri arama zaman aşımı uyarıları
/gateway/bot meta verilerini alır. Geçici hatalar Discord’un varsayılan Gateway URL’sine geri döner ve günlüklerde hız sınırlamasına tabi tutulur.Meta veri zaman aşımı ayarları:- tek hesap:
channels.discord.gatewayInfoTimeoutMs - çoklu hesap:
channels.discord.accounts.<accountId>.gatewayInfoTimeoutMs - yapılandırma ayarlanmamışsa env yedeği:
OPENCLAW_DISCORD_GATEWAY_INFO_TIMEOUT_MS - varsayılan:
30000(30 saniye), en fazla:120000
Gateway READY zaman aşımı yeniden başlatmaları
Gateway READY zaman aşımı yeniden başlatmaları
READY olayını bekler. Başlangıç kademelendirmesi olan ç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 yedeği:
OPENCLAW_DISCORD_READY_TIMEOUT_MS - başlangıç varsayılanı:
15000(15 saniye), en fazla:120000 - çalışma zamanı tek hesap:
channels.discord.gatewayRuntimeReadyTimeoutMs - çalışma zamanı çoklu hesap:
channels.discord.accounts.<accountId>.gatewayRuntimeReadyTimeoutMs - yapılandırma ayarlanmamışsa çalışma zamanı env yedeği:
OPENCLAW_DISCORD_RUNTIME_READY_TIMEOUT_MS - çalışma zamanı varsayılanı:
30000(30 saniye), en fazla:120000
Permissions audit mismatches
Permissions audit mismatches
channels status --probe izin denetimleri yalnızca sayısal kanal kimlikleriyle çalışır.Slug anahtarları kullanırsanız çalışma zamanı eşleştirmesi yine ç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ışını önlemek için katı mention ve allowlist kuralları kullanın.
Yalnızca bottan bahseden bot iletilerini kabul etmek için channels.discord.allowBots="mentions" tercih edin.OpenClaw ayrıca paylaşılan bot döngüsü koruması ile gelir. allowBots, bot tarafından yazılan iletilerin dispatch aşamasına ulaşmasına izin verdiğinde Discord, gelen olayı (account, channel, bot pair) bilgilerine eşler ve genel çift koruması, yapılandırılan olay bütçesini aştıktan sonra çifti bastırır. Koruma, daha önce Discord hız sınırlarıyla durdurulması gereken kontrolsüz iki botlu döngüleri önler; tek botlu dağıtımları veya bütçenin altında kalan tek seferlik bot yanıtlarını etkilemez.Varsayılan ayarlar (allowBots ayarlandığında etkin):maxEventsPerWindow: 20— bot çifti kayan pencere içinde 20 ileti alışverişi yapabilirwindowSeconds: 60— kayan pencere uzunluğucooldownSeconds: 60— bütçe tetiklendiğinde, her iki yöndeki her ek botlar arası ileti bir dakika boyunca bırakılır
channels.defaults.botLoopProtection altında yapılandırın, ardından meşru bir iş akışının daha fazla hareket alanına ihtiyacı olduğunda Discord için geçersiz kılın. Öncelik sırası şöyledir:channels.discord.accounts.<account>.botLoopProtectionchannels.discord.botLoopProtectionchannels.defaults.botLoopProtection- yerleşik varsayılanlar
maxEventsPerWindow, windowSeconds ve cooldownSeconds anahtarlarını kullanır.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=trueolduğunu doğrulayın (varsayılan)channels.discord.voice.decryptionFailureTolerance=24değerinden 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ılmadan 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 başvurusu
Birincil başvuru: Yapılandırma başvurusu - 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 takma ad:streamMode),streaming.preview.toolProgress,draftChunk,blockStreaming,blockStreamingCoalesce - medya/yeniden deneme:
mediaMaxMb(giden Discord yüklemelerini sınırlar, varsayılan100MB),retry - eylemler:
actions.* - durum:
activity,status,activityType,activityUrl - UI:
ui.components.accentColor - özellikler:
threadBindings, üst düzeybindings[](type: "acp"),pluralkit,execApprovals,intents,agentComponents.enabled,agentComponents.ttlMs,heartbeat,responsePrefix
Güvenlik ve işlemler
- Bot tokenlarını sır olarak ele alın (gözetimli ortamlarda
DISCORD_BOT_TOKENtercih edilir). - En az ayrıcalıklı Discord izinlerini verin.
- Komut dağıtımı/durumu eskiyse Gateway’i yeniden başlatın ve
openclaw channels status --probeile yeniden kontrol edin.