Developer and self-hosted
Twitch
Dukungan obrolan Twitch melalui antarmuka obrolan (IRC) Twitch dengan klien Twurple. OpenClaw masuk sebagai akun bot Twitch, bergabung dengan satu kanal untuk setiap akun yang dikonfigurasi, dan membalas di kanal tersebut.
Instalasi
Twitch disediakan sebagai plugin resmi; plugin ini bukan bagian dari instalasi inti.
registri npm
openclaw plugins install @openclaw/twitchCheckout lokal
openclaw plugins install ./path/to/local/twitch-pluginplugins install mendaftarkan dan mengaktifkan plugin. Memilih Twitch saat menjalankan openclaw onboard atau openclaw channels add akan menginstalnya sesuai kebutuhan. Gunakan nama paket tanpa versi untuk mengikuti rilis saat ini; sematkan versi tertentu hanya untuk instalasi yang dapat direproduksi. Memerlukan OpenClaw 2026.4.10 atau yang lebih baru.
Detail: Plugin
Penyiapan cepat
Instal plugin
Lihat Instalasi di atas.
Buat akun bot Twitch
Buat akun Twitch khusus untuk bot (atau gunakan akun yang sudah ada).
Buat kredensial
Gunakan Twitch Token Generator:
- Pilih Bot Token
- Pastikan cakupan
chat:readdanchat:writedipilih - Salin Client ID dan Access Token
Temukan ID pengguna Twitch Anda
Gunakan https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ untuk mengonversi nama pengguna menjadi ID pengguna Twitch.
Konfigurasikan token
- Variabel lingkungan:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(hanya akun bawaan) - Atau konfigurasi:
channels.twitch.accessToken
Jika keduanya ditetapkan, konfigurasi diprioritaskan (variabel lingkungan hanya menjadi fallback untuk akun bawaan).
Mulai Gateway
openclaw gateway runKonfigurasi minimal:
{ channels: { twitch: { enabled: true, username: "openclaw", // Akun Twitch bot (melakukan autentikasi) accessToken: "oauth:abc123...", // Token akses OAuth (atau gunakan variabel lingkungan OPENCLAW_TWITCH_ACCESS_TOKEN) clientId: "xyz789...", // ID klien dari Token Generator channel: "yourchannel", // Obrolan kanal Twitch yang akan dimasuki (wajib) allowFrom: ["123456789"], // (disarankan) Hanya ID pengguna Twitch Anda }, },}Apa itu
- Kanal Twitch yang dimiliki oleh Gateway.
- Perutean deterministik: balasan selalu dikirim kembali ke kanal Twitch asal pesan.
- Setiap kanal yang dimasuki dipetakan ke kunci sesi grup terisolasi
agent:<agentId>:twitch:group:<channel>. usernameadalah akun bot (yang melakukan autentikasi), sedangkanchanneladalah ruang obrolan yang akan dimasuki. Setiap entri akun bergabung dengan tepat satu kanal.- Token berfungsi dengan atau tanpa prefiks
oauth:; OpenClaw menormalisasi keduanya (wizard penyiapan mengharapkan bentukoauth:).
Penyegaran token (opsional)
Token dari Twitch Token Generator tidak dapat disegarkan oleh OpenClaw—buat ulang setelah kedaluwarsa (token bertahan beberapa jam; pendaftaran aplikasi tidak diperlukan).
Untuk penyegaran otomatis, buat aplikasi Anda sendiri di Twitch Developer Console, lalu tambahkan:
{ channels: { twitch: { clientSecret: "your_client_secret", refreshToken: "your_refresh_token", }, },}Jika keduanya ditetapkan, plugin menggunakan penyedia autentikasi dengan penyegaran yang memperbarui token sebelum kedaluwarsa dan mencatat setiap penyegaran. Tanpa refreshToken, plugin mencatat token refresh disabled (no refresh token); tanpa clientSecret, plugin menggunakan fallback berupa token statis (tanpa penyegaran).
Dukungan multiakun
Gunakan channels.twitch.accounts dengan kredensial per akun. Lihat Konfigurasi untuk pola bersama.
Contoh (satu akun bot di dua kanal):
{ channels: { twitch: { accounts: { channel1: { username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "yourchannel", }, channel2: { username: "openclaw", accessToken: "oauth:def456...", clientId: "uvw012...", channel: "secondchannel", }, }, }, },}Kontrol akses
allowFrom adalah daftar izin wajib berisi ID pengguna Twitch. Jika ditetapkan, allowedRoles diabaikan; jangan tetapkan allowFrom untuk menggunakan akses berbasis peran.
Peran yang tersedia: "moderator", "owner", "vip", "subscriber", "all".
Daftar izin ID pengguna (paling aman)
{ channels: { twitch: { accounts: { default: { allowFrom: ["123456789", "987654321"], }, }, }, },}Berbasis peran
{ channels: { twitch: { accounts: { default: { allowedRoles: ["moderator", "vip"], }, }, }, },}Nonaktifkan persyaratan @mention
Secara bawaan, requireMention bernilai true. Untuk merespons semua pesan yang diizinkan:
{ channels: { twitch: { accounts: { default: { requireMention: false, }, }, }, },}Pemecahan masalah
Pertama, jalankan perintah diagnostik:
openclaw doctoropenclaw channels status --probeBot tidak merespons pesan
- Periksa kontrol akses: Pastikan ID pengguna Anda tercantum dalam
allowFrom, atau hapusallowFromuntuk sementara dan tetapkanallowedRoles: ["all"]untuk menguji. - Periksa gerbang penyebutan: Dengan
requireMention: true(bawaan), pesan harus menyebut nama pengguna bot menggunakan @mention. - Periksa apakah bot berada di kanal: Bot hanya bergabung dengan kanal yang disebutkan dalam
channel.
Masalah token
Kesalahan "Failed to connect" atau autentikasi:
- Pastikan
accessTokenadalah nilai token akses OAuth (prefiksoauth:bersifat opsional) - Pastikan token memiliki cakupan
chat:readdanchat:write - Jika menggunakan penyegaran token, pastikan
clientSecretdanrefreshTokenditetapkan
Penyegaran token tidak berfungsi
Periksa log untuk peristiwa penyegaran:
Using env token source for mybotAccess token refreshed for user 123456 (expires in 14400s)Jika Anda melihat token refresh disabled (no refresh token):
- Pastikan
clientSecretdisediakan - Pastikan
refreshTokendisediakan
Konfigurasi
Konfigurasi akun
usernamestringrequiredNama pengguna bot (akun yang melakukan autentikasi).
accessTokenstringrequiredToken akses OAuth dengan chat:read dan chat:write (konfigurasi atau variabel lingkungan untuk akun bawaan).
clientIdstringrequiredID Klien Twitch (dari Token Generator atau aplikasi Anda). Opsional dalam skema, tetapi wajib untuk terhubung.
channelstringrequiredKanal yang akan dimasuki.
enabledbooleandefault: trueAktifkan akun ini.
clientSecretstringOpsional: untuk penyegaran token otomatis.
refreshTokenstringOpsional: untuk penyegaran token otomatis.
expiresInnumberMasa kedaluwarsa token dalam detik (pelacakan penyegaran).
obtainmentTimestampnumberStempel waktu saat token diperoleh (pelacakan penyegaran).
allowFromstring[]Daftar izin ID pengguna. Jika ditetapkan, peran diabaikan.
allowedRoles'Array<"moderator"requireMentionbooleandefault: trueWajibkan @mention untuk memicu bot.
responsePrefixstringPenggantian prefiks respons keluar untuk akun ini.
Opsi penyedia
channels.twitch.enabled- Aktifkan/nonaktifkan pemulaian kanalchannels.twitch.username/accessToken/clientId/channel- Konfigurasi satu akun yang disederhanakan (akundefaultimplisit; diprioritaskan daripadaaccounts.default)channels.twitch.accounts.<accountName>- Konfigurasi multiakun (semua bidang akun di atas)channels.twitch.defaultAccount- Nama akun yang menjadi bawaanchannels.twitch.markdown.tables- Mode perenderan tabel Markdown (off|bullets|code|block)
Contoh lengkap:
{ 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"], }, }, }, },}Tindakan alat
Agen dapat mengirim pesan Twitch melalui tindakan send pada alat pesan:
{ channel: "twitch", action: "send", to: "#mychannel", message: "Hello Twitch!",}to bersifat opsional dan nilai bawaannya adalah channel yang dikonfigurasi untuk akun.
Keamanan dan operasi
- Perlakukan token seperti kata sandi—jangan pernah melakukan commit token ke git.
- Gunakan penyegaran token otomatis untuk bot yang berjalan lama.
- Gunakan daftar izin ID pengguna alih-alih nama pengguna untuk kontrol akses.
- Pantau log untuk peristiwa penyegaran token dan status koneksi.
- Batasi cakupan token seminimal mungkin—hanya minta
chat:readdanchat:write. - Jika mengalami kendala: mulai ulang Gateway setelah memastikan tidak ada proses lain yang memiliki sesi tersebut.
Batasan
- 500 karakter per pesan; balasan yang lebih panjang dipecah pada batas kata.
- Markdown dihapus sebelum pengiriman (obrolan Twitch berupa teks biasa; baris baru menjadi spasi).
- OpenClaw tidak menambahkan pembatasan laju sendiri; klien obrolan Twurple menangani batas laju Twitch.
Terkait
- Perutean Kanal — perutean sesi untuk pesan
- Ikhtisar Kanal — semua kanal yang didukung
- Grup — perilaku obrolan grup dan gerbang penyebutan
- Pemasangan — autentikasi DM dan alur pemasangan
- Keamanan — model akses dan penguatan