Developer and self-hosted
Twitch
Dukungan obrolan Twitch melalui antarmuka obrolan (IRC) Twitch menggunakan klien Twurple. OpenClaw masuk sebagai akun bot Twitch, bergabung ke satu channel per akun yang dikonfigurasi, dan membalas di channel 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 openclaw onboard atau openclaw channels add akan menginstalnya sesuai kebutuhan. Gunakan nama paket tanpa tambahan untuk mengikuti rilis saat ini; sematkan versi persis 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
- Lingkungan:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(hanya akun default) - Atau konfigurasi:
channels.twitch.accessToken
Jika keduanya ditetapkan, konfigurasi diprioritaskan (variabel lingkungan hanya menjadi cadangan untuk akun default).
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 channel Twitch yang akan dimasuki (wajib) allowFrom: ["123456789"], // (disarankan) Hanya ID pengguna Twitch Anda }, },}Apa ini
- Channel Twitch yang dimiliki oleh Gateway.
- Perutean deterministik: balasan selalu dikirim kembali ke channel Twitch asal pesan.
- Setiap channel 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. Satu entri akun bergabung ke tepat satu channel.- Token berfungsi dengan atau tanpa prefiks
oauth:; OpenClaw menormalisasi kedua bentuk tersebut (wizard penyiapan mengharapkan bentukoauth:).
Durabilitas pesan masuk
OpenClaw memasukkan setiap pesan obrolan Twitch yang diterima ke antrean secara persisten sebelum pengiriman normal. Pesan yang tertunda atau dapat dicoba ulang tetap tersedia setelah Gateway dimulai ulang, tetap diserialisasi untuk channel yang dikonfigurasi, dan menggunakan ID pesan Twitch untuk mencegah entri antrean duplikat selama catatan penyelesaian aktif atau yang dipertahankan masih ada.
Obrolan Twitch tidak memutar ulang PRIVMSG setelah klien menerimanya. Hal ini melindungi rentang kegagalan antara penerimaan lokal dan pengiriman, tetapi tidak dapat memulihkan pesan yang terlewat sebelum penerimaan persisten. Jika penambahan ke antrean gagal, OpenClaw mencatat kegagalan tersebut; penyambungan ulang tidak meminta Twitch mengirim ulang pesan itu.
Penyegaran token (opsional)
Token dari Twitch Token Generator tidak dapat disegarkan oleh OpenClaw—buat ulang ketika kedaluwarsa (token berlaku selama beberapa jam; tidak memerlukan pendaftaran aplikasi).
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 kembali menggunakan 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 channel):
{ 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 ketat berisi ID pengguna Twitch. Jika ditetapkan, allowedRoles diabaikan; biarkan allowFrom tidak ditetapkan 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 default, requireMention adalah 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 ada di
allowFrom, atau hapus sementaraallowFromdan tetapkanallowedRoles: ["all"]untuk melakukan pengujian. - Periksa gerbang penyebutan: Dengan
requireMention: true(default), pesan harus menyebut nama pengguna bot dengan @mention. - Pastikan bot berada di channel: Bot hanya bergabung ke channel yang disebutkan dalam
channel.
Masalah token
"Gagal terhubung" atau kesalahan 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:
Menggunakan sumber token lingkungan untuk mybotToken akses disegarkan untuk pengguna 123456 (kedaluwarsa dalam 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 lingkungan untuk akun default).
clientIdstringrequiredID Klien Twitch (dari Token Generator atau aplikasi Anda). Opsional dalam skema, tetapi wajib untuk terhubung.
channelstringrequiredChannel yang akan dimasuki.
enabledbooleandefault: trueAktifkan akun ini.
clientSecretstringOpsional: untuk penyegaran token otomatis.
refreshTokenstringOpsional: untuk penyegaran token otomatis.
expiresInnumberMasa berlaku 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 permulaan channelchannels.twitch.username/accessToken/clientId/channel- Konfigurasi akun tunggal yang disederhanakan (akundefaultimplisit; diprioritaskan daripadaaccounts.default)channels.twitch.accounts.<accountName>- Konfigurasi multiakun (semua bidang akun di atas)channels.twitch.defaultAccount- Nama akun yang menjadi defaultchannels.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: "Halo Twitch!",}to bersifat opsional dan secara default menggunakan 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 dalam waktu 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.
Batas
- 500 karakter per pesan; balasan yang lebih panjang dibagi pada batas kata.
- Markdown dihapus sebelum dikirim (obrolan Twitch berupa teks biasa; baris baru diubah menjadi spasi).
- OpenClaw tidak menambahkan pembatasan laju sendiri; klien obrolan Twurple menangani batas laju Twitch.
Terkait
- Perutean Saluran — perutean sesi untuk pesan
- Ikhtisar Saluran — semua saluran yang didukung
- Grup — perilaku obrolan grup dan pembatasan berdasarkan sebutan
- Pemasangan — autentikasi DM dan alur pemasangan
- Keamanan — model akses dan penguatan