Developer and self-hosted
Twitch
Dukungan chat Twitch melalui koneksi IRC. OpenClaw terhubung sebagai pengguna Twitch (akun bot) untuk menerima dan mengirim pesan di channel.
Plugin bawaan
Jika Anda menggunakan build lama atau instalasi kustom yang mengecualikan Twitch, instal paket npm secara langsung:
npm registry
openclaw plugins install @openclaw/twitch
Checkout lokal
openclaw plugins install ./path/to/local/twitch-plugin
Gunakan paket dasar untuk mengikuti tag rilis resmi saat ini. Pin versi persis hanya ketika Anda memerlukan instalasi yang dapat direproduksi.
Detail: Plugin
Penyiapan cepat (pemula)
Pastikan Plugin tersedia
Rilis OpenClaw paket saat ini sudah menyertakannya. Instalasi lama/kustom dapat menambahkannya secara manual dengan perintah 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 scope
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
- Env:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(hanya akun default) - Atau config:
channels.twitch.accessToken
Jika keduanya diatur, config lebih diprioritaskan (fallback env hanya untuk akun default).
Mulai gateway
Mulai gateway dengan channel yang telah dikonfigurasi.
Config minimal:
{
channels: {
twitch: {
enabled: true,
username: "openclaw", // Bot's Twitch account
accessToken: "oauth:abc123...", // OAuth Access Token (or use OPENCLAW_TWITCH_ACCESS_TOKEN env var)
clientId: "xyz789...", // Client ID from Token Generator
channel: "vevisk", // Which Twitch channel's chat to join (required)
allowFrom: ["123456789"], // (recommended) Your Twitch user ID only - get it from https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/
},
},
}
Apa ini
- Channel Twitch yang dimiliki oleh Gateway.
- Perutean deterministik: balasan selalu kembali ke Twitch.
- Setiap akun dipetakan ke kunci sesi terisolasi
agent:<agentId>:twitch:<accountName>. usernameadalah akun bot (yang melakukan autentikasi),channeladalah ruang chat yang akan dimasuki.
Penyiapan (terperinci)
Buat kredensial
Gunakan Twitch Token Generator:
- Pilih Bot Token
- Pastikan scope
chat:readdanchat:writedipilih - Salin Client ID dan Access Token
Konfigurasikan bot
Variabel env (hanya akun default)
OPENCLAW_TWITCH_ACCESS_TOKEN=oauth:abc123...
Config
{
channels: {
twitch: {
enabled: true,
username: "openclaw",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "vevisk",
},
},
}
Jika env dan config sama-sama diatur, config lebih diprioritaskan.
Kontrol akses (direkomendasikan)
{
channels: {
twitch: {
allowFrom: ["123456789"], // (recommended) Your Twitch user ID only
},
},
}
Utamakan allowFrom untuk allowlist ketat. Gunakan allowedRoles sebagai gantinya jika Anda menginginkan akses berbasis peran.
Peran yang tersedia: "moderator", "owner", "vip", "subscriber", "all".
Refresh token (opsional)
Token dari Twitch Token Generator tidak dapat direfresh secara otomatis - buat ulang saat kedaluwarsa.
Untuk refresh token otomatis, buat aplikasi Twitch Anda sendiri di Twitch Developer Console dan tambahkan ke config:
{
channels: {
twitch: {
clientSecret: "your_client_secret",
refreshToken: "your_refresh_token",
},
},
}
Bot otomatis merefresh token sebelum kedaluwarsa dan mencatat event refresh.
Dukungan multi-akun
Gunakan channels.twitch.accounts dengan token 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: "vevisk",
},
channel2: {
username: "openclaw",
accessToken: "oauth:def456...",
clientId: "uvw012...",
channel: "secondchannel",
},
},
},
},
}
Kontrol akses
Allowlist ID pengguna (paling aman)
{
channels: {
twitch: {
accounts: {
default: {
allowFrom: ["123456789", "987654321"],
},
},
},
},
}
Berbasis peran
{
channels: {
twitch: {
accounts: {
default: {
allowedRoles: ["moderator", "vip"],
},
},
},
},
}
allowFrom adalah allowlist ketat. Ketika diatur, hanya ID pengguna tersebut yang diizinkan. Jika Anda menginginkan akses berbasis peran, biarkan allowFrom tidak diatur dan konfigurasikan allowedRoles sebagai gantinya.
Nonaktifkan persyaratan @mention
Secara default, requireMention bernilai true. Untuk menonaktifkan dan merespons semua pesan:
{
channels: {
twitch: {
accounts: {
default: {
requireMention: false,
},
},
},
},
}
Pemecahan masalah
Pertama, jalankan perintah diagnostik:
openclaw doctor
openclaw channels status --probe
Bot tidak merespons pesan
- Periksa kontrol akses: Pastikan ID pengguna Anda ada di
allowFrom, atau hapusallowFromsementara dan aturallowedRoles: ["all"]untuk menguji. - Periksa apakah bot berada di channel: Bot harus masuk ke channel yang ditentukan di
channel.
Masalah token
"Gagal terhubung" atau error autentikasi:
- Pastikan
accessTokenadalah nilai token akses OAuth (biasanya dimulai dengan prefiksoauth:) - Periksa apakah token memiliki scope
chat:readdanchat:write - Jika menggunakan refresh token, pastikan
clientSecretdanrefreshTokendiatur
Refresh token tidak berfungsi
Periksa log untuk event refresh:
Using env token source for mybot
Access token refreshed for user 123456 (expires in 14400s)
Jika Anda melihat "token refresh disabled (no refresh token)":
- Pastikan
clientSecretdisediakan - Pastikan
refreshTokendisediakan
Config
Config akun
usernamestringNama pengguna bot.
accessTokenstringToken akses OAuth dengan chat:read dan chat:write.
clientIdstringClient ID Twitch (dari Token Generator atau aplikasi Anda).
channelstringrequiredChannel yang akan dimasuki.
enabledbooleanAktifkan akun ini.
clientSecretstringOpsional: untuk refresh token otomatis.
refreshTokenstringOpsional: untuk refresh token otomatis.
expiresInnumberKedaluwarsa token dalam detik.
obtainmentTimestampnumberTimestamp token diperoleh.
allowFromstring[]Allowlist ID pengguna.
allowedRoles'Array<"moderator"requireMentionbooleanMemerlukan @mention.
Opsi provider
channels.twitch.enabled- Aktifkan/nonaktifkan startup channelchannels.twitch.username- Nama pengguna bot (config satu akun yang disederhanakan)channels.twitch.accessToken- Token akses OAuth (config satu akun yang disederhanakan)channels.twitch.clientId- Client ID Twitch (config satu akun yang disederhanakan)channels.twitch.channel- Channel yang akan dimasuki (config satu akun yang disederhanakan)channels.twitch.accounts.<accountName>- Config multi-akun (semua field akun di atas)
Contoh lengkap:
{
channels: {
twitch: {
enabled: true,
username: "openclaw",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "vevisk",
clientSecret: "secret123...",
refreshToken: "refresh456...",
allowFrom: ["123456789"],
allowedRoles: ["moderator", "vip"],
accounts: {
default: {
username: "mybot",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "your_channel",
enabled: true,
clientSecret: "secret123...",
refreshToken: "refresh456...",
expiresIn: 14400,
obtainmentTimestamp: 1706092800000,
allowFrom: ["123456789", "987654321"],
allowedRoles: ["moderator"],
},
},
},
},
}
Tindakan alat
Agent dapat memanggil twitch dengan tindakan:
send- Kirim pesan ke channel
Contoh:
{
action: "twitch",
params: {
message: "Hello Twitch!",
to: "#mychannel",
},
}
Keamanan dan ops
- Perlakukan token seperti kata sandi — Jangan pernah commit token ke git.
- Gunakan refresh token otomatis untuk bot yang berjalan lama.
- Gunakan allowlist ID pengguna alih-alih nama pengguna untuk kontrol akses.
- Pantau log untuk event refresh token dan status koneksi.
- Batasi scope token seminimal mungkin — Hanya minta
chat:readdanchat:write. - Jika macet: Mulai ulang gateway setelah memastikan tidak ada proses lain yang memiliki sesi.
Batasan
- 500 karakter per pesan (dipecah otomatis pada batas kata).
- Markdown dihapus sebelum pemecahan.
- Tidak ada pembatasan laju (menggunakan batas laju bawaan Twitch).
Terkait
- Perutean Channel — perutean sesi untuk pesan
- Ikhtisar Channel — semua channel yang didukung
- Grup — perilaku chat grup dan gating mention
- Pairing — autentikasi DM dan alur pairing
- Keamanan — model akses dan hardening