Developer and self-hosted
Twitch
Twurple istemcisi aracılığıyla Twitch'in sohbet (IRC) arayüzü üzerinden Twitch sohbet desteği. OpenClaw, bir Twitch bot hesabıyla oturum açar, yapılandırılmış her hesap için bir kanala katılır ve o kanalda yanıt verir.
Kurulum
Twitch, resmî bir Plugin olarak sunulur; çekirdek kurulumun parçası değildir.
npm kayıt defteri
openclaw plugins install @openclaw/twitchYerel çalışma kopyası
openclaw plugins install ./path/to/local/twitch-pluginplugins install, Plugin'i kaydeder ve etkinleştirir. openclaw onboard veya openclaw channels add sırasında Twitch seçildiğinde gerektiğinde kurulur. Güncel sürümü takip etmek için yalnızca paket adını kullanın; tam sürümü yalnızca tekrarlanabilir kurulumlar için sabitleyin. OpenClaw 2026.4.10 veya daha yenisini gerektirir.
Ayrıntılar: Plugin'ler
Hızlı kurulum
Plugin'i kurun
Yukarıdaki Kurulum bölümüne bakın.
Bir Twitch bot hesabı oluşturun
Bot için ayrı bir Twitch hesabı oluşturun (veya mevcut bir hesabı kullanın).
Kimlik bilgilerini oluşturun
Twitch Token Generator aracını kullanın:
- Bot Token öğesini seçin
chat:readvechat:writekapsamlarının seçili olduğunu doğrulayın- Client ID ve Access Token değerlerini kopyalayın
Twitch kullanıcı kimliğinizi bulun
Bir kullanıcı adını Twitch kullanıcı kimliğine dönüştürmek için https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ aracını kullanın.
Token'ı yapılandırın
- Ortam değişkeni:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(yalnızca varsayılan hesap) - Veya yapılandırma:
channels.twitch.accessToken
Her ikisi de ayarlanmışsa yapılandırma önceliklidir (ortam değişkeni yalnızca varsayılan hesap için yedek olarak kullanılır).
Gateway'i başlatın
openclaw gateway runAsgari yapılandırma:
{ channels: { twitch: { enabled: true, username: "openclaw", // Botun Twitch hesabı (kimlik doğrulaması yapar) accessToken: "oauth:abc123...", // OAuth erişim token'ı (veya OPENCLAW_TWITCH_ACCESS_TOKEN ortam değişkenini kullanın) clientId: "xyz789...", // Token Generator'dan alınan istemci kimliği channel: "yourchannel", // Hangi Twitch kanalının sohbetine katılacağı (zorunlu) allowFrom: ["123456789"], // (önerilir) Yalnızca Twitch kullanıcı kimliğiniz }, },}Nedir?
- Gateway'in sahip olduğu bir Twitch kanalıdır.
- Belirlenimci yönlendirme: yanıtlar her zaman mesajın geldiği Twitch kanalına geri gönderilir.
- Katılınan her kanal, yalıtılmış bir grup oturumu anahtarıyla
agent:<agentId>:twitch:group:<channel>eşlenir. usernamebotun hesabıdır (kimlik doğrulaması yapan),channelise katılınacak sohbet odasıdır. Her hesap girdisi tam olarak bir kanala katılır.- Token'lar
oauth:önekiyle veya öneksiz çalışır; OpenClaw her iki biçimi de normalleştirir (kurulum sihirbazıoauth:biçimini bekler).
Gelen iletilerin dayanıklılığı
OpenClaw, kabul edilen her Twitch sohbet iletisini normal dağıtımdan önce kalıcı olarak kuyruğa alır. Bekleyen veya yeniden denenebilir iletiler Gateway yeniden başlatıldığında korunur, yapılandırılmış kanal için sıralı kalır ve etkin ya da saklanan tamamlanma kaydı mevcut olduğu sürece yinelenen kuyruk girdilerini engellemek için Twitch'in ileti kimliğini kullanır.
Twitch sohbeti, istemci kabul ettikten sonra bir PRIVMSG öğesini yeniden oynatmaz. Bu, yerel kabul ile dağıtım arasındaki çökme aralığını korur ancak kalıcı kabulden önce kaçırılan iletileri kurtaramaz. Kuyruğa ekleme işleminin kendisi başarısız olursa OpenClaw hatayı günlüğe kaydeder; yeniden bağlanmak Twitch'ten bu iletiyi yeniden göndermesini istemez.
Token yenileme (isteğe bağlı)
Twitch Token Generator tarafından oluşturulan token'lar OpenClaw tarafından yenilenemez; süreleri dolduğunda yeniden oluşturun (birkaç saat geçerlidirler; uygulama kaydı gerekmez).
Otomatik yenileme için Twitch Developer Console üzerinden kendi uygulamanızı oluşturun ve şunları ekleyin:
{ channels: { twitch: { clientSecret: "your_client_secret", refreshToken: "your_refresh_token", }, },}Her ikisi de ayarlandığında Plugin, token'ları süreleri dolmadan yenileyen ve her yenilemeyi günlüğe kaydeden bir yenilemeli kimlik doğrulama sağlayıcısı kullanır. refreshToken olmadan token refresh disabled (no refresh token) günlüğe kaydedilir; clientSecret olmadan statik (yenilenmeyen) bir token'a geri dönülür.
Çoklu hesap desteği
Hesap başına kimlik bilgileriyle channels.twitch.accounts kullanın. Ortak kalıp için Yapılandırma bölümüne bakın.
Örnek (iki kanalda tek bot hesabı):
{ channels: { twitch: { accounts: { channel1: { username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "yourchannel", }, channel2: { username: "openclaw", accessToken: "oauth:def456...", clientId: "uvw012...", channel: "secondchannel", }, }, }, },}Erişim denetimi
allowFrom, Twitch kullanıcı kimliklerinden oluşan katı bir izin listesidir. Ayarlandığında allowedRoles yok sayılır; bunun yerine rol tabanlı erişim kullanmak için allowFrom ayarını kaldırılmış bırakın.
Kullanılabilir roller: "moderator", "owner", "vip", "subscriber", "all".
Kullanıcı kimliği izin listesi (en güvenli)
{ channels: { twitch: { accounts: { default: { allowFrom: ["123456789", "987654321"], }, }, }, },}Rol tabanlı
{ channels: { twitch: { accounts: { default: { allowedRoles: ["moderator", "vip"], }, }, }, },}@bahsetme gereksinimini devre dışı bırak
Varsayılan olarak requireMention, true değerindedir. İzin verilen tüm iletilere yanıt vermek için:
{ channels: { twitch: { accounts: { default: { requireMention: false, }, }, }, },}Sorun giderme
Önce tanılama komutlarını çalıştırın:
openclaw doctoropenclaw channels status --probeBot iletilere yanıt vermiyor
- Erişim denetimini kontrol edin: Kullanıcı kimliğinizin
allowFromiçinde olduğundan emin olun veya test etmek için geçici olarakallowFromöğesini kaldırıpallowedRoles: ["all"]değerini ayarlayın. - Bahsetme geçidini kontrol edin:
requireMention: true(varsayılan) kullanıldığında iletiler botun kullanıcı adından @bahsetmelidir. - Botun kanalda olduğunu kontrol edin: Bot yalnızca
channeliçinde belirtilen kanala katılır.
Token sorunları
"Bağlanılamadı" veya kimlik doğrulama hataları:
accessTokendeğerinin OAuth erişim token'ı değeri olduğunu doğrulayın (oauth:öneki isteğe bağlıdır)- Token'ın
chat:readvechat:writekapsamlarına sahip olduğunu kontrol edin - Token yenileme kullanılıyorsa
clientSecretverefreshTokendeğerlerinin ayarlandığını doğrulayın
Token yenileme çalışmıyor
Yenileme olayları için günlükleri kontrol edin:
mybot için ortam değişkeni token kaynağı kullanılıyor123456 kullanıcısının erişim token'ı yenilendi (14400s içinde süresi dolacak)token refresh disabled (no refresh token) görürseniz:
clientSecretsağlandığından emin olunrefreshTokensağlandığından emin olun
Yapılandırma
Hesap yapılandırması
usernamestringrequiredBot kullanıcı adı (kimlik doğrulaması yapan hesap).
accessTokenstringrequiredchat:read ve chat:write kapsamlarına sahip OAuth erişim token'ı (varsayılan hesap için yapılandırma veya ortam değişkeni).
clientIdstringrequiredTwitch İstemci Kimliği (Token Generator'dan veya uygulamanızdan). Şemada isteğe bağlıdır ancak bağlanmak için zorunludur.
channelstringrequiredKatılınacak kanal.
enabledbooleandefault: trueBu hesabı etkinleştirin.
clientSecretstringİsteğe bağlı: otomatik token yenileme için.
refreshTokenstringİsteğe bağlı: otomatik token yenileme için.
expiresInnumberToken'ın saniye cinsinden sona erme süresi (yenileme takibi).
obtainmentTimestampnumberToken'ın alındığı zaman damgası (yenileme takibi).
allowFromstring[]Kullanıcı kimliği izin listesi. Ayarlandığında roller yok sayılır.
allowedRoles'Array<"moderator"requireMentionbooleandefault: trueBotu tetiklemek için @bahsetme gerektirir.
responsePrefixstringBu hesap için giden yanıt öneki geçersiz kılma değeri.
Sağlayıcı seçenekleri
channels.twitch.enabled- Kanal başlangıcını etkinleştirir/devre dışı bırakırchannels.twitch.username/accessToken/clientId/channel- Basitleştirilmiş tek hesap yapılandırması (örtükdefaulthesabı;accounts.defaultüzerinde önceliklidir)channels.twitch.accounts.<accountName>- Çoklu hesap yapılandırması (yukarıdaki tüm hesap alanları)channels.twitch.defaultAccount- Hangi hesap adının varsayılan olduğuchannels.twitch.markdown.tables- Markdown tablosu oluşturma modu (off|bullets|code|block)
Tam örnek:
{ channels: { twitch: { enabled: true, username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "yourchannel", clientSecret: "secret123...", refreshToken: "refresh456...", allowFrom: ["123456789"], accounts: { second: { username: "mybot", accessToken: "oauth:def456...", clientId: "uvw012...", channel: "your_channel", enabled: true, expiresIn: 14400, obtainmentTimestamp: 1706092800000, allowedRoles: ["moderator"], }, }, }, },}Araç eylemleri
Aracı, ileti aracının send eylemi üzerinden Twitch iletileri gönderebilir:
{ channel: "twitch", action: "send", to: "#mychannel", message: "Hello Twitch!",}to isteğe bağlıdır ve varsayılan olarak hesabın yapılandırılmış channel değerini kullanır.
Güvenlik ve operasyonlar
- Token'ları parolalar gibi ele alın - token'ları asla git'e işlemeyin.
- Uzun süre çalışan botlar için otomatik token yenilemeyi kullanın.
- Erişim denetimi için kullanıcı adları yerine kullanıcı kimliği izin listelerini kullanın.
- Token yenileme olayları ve bağlantı durumu için günlükleri izleyin.
- Token kapsamlarını en düşük düzeyde tutun - yalnızca
chat:readvechat:writekapsamlarını isteyin. - Takılırsanız: başka hiçbir işlemin oturumun sahibi olmadığını doğruladıktan sonra Gateway'i yeniden başlatın.
Sınırlar
- Mesaj başına 500 karakter; daha uzun yanıtlar sözcük sınırlarından parçalara ayrılır.
- Markdown gönderilmeden önce kaldırılır (Twitch sohbeti düz metindir; yeni satırlar boşluklara dönüşür).
- OpenClaw kendi başına herhangi bir hız sınırlaması eklemez; Twitch hız sınırlarını Twurple sohbet istemcisi yönetir.
İlgili
- Kanal Yönlendirme — iletiler için oturum yönlendirmesi
- Kanallara Genel Bakış — desteklenen tüm kanallar
- Gruplar — grup sohbeti davranışı ve bahsetme denetimi
- Eşleştirme — DM kimlik doğrulaması ve eşleştirme akışı
- Güvenlik — erişim modeli ve sağlamlaştırma