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

bash
openclaw plugins install @openclaw/twitch

Checkout lokal

bash
openclaw plugins install ./path/to/local/twitch-plugin

plugins 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:read dan chat:write dipilih
    • 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

    bash
    openclaw gateway run
  • Konfigurasi minimal:

    json5
    {  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>.
    • username adalah akun bot (yang melakukan autentikasi), sedangkan channel adalah 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 bentuk oauth:).

    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:

    json5
    {  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):

    json5
    {  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)

    json5
    {  channels: {    twitch: {      accounts: {        default: {          allowFrom: ["123456789", "987654321"],        },      },    },  },}

    Berbasis peran

    json5
    {  channels: {    twitch: {      accounts: {        default: {          allowedRoles: ["moderator", "vip"],        },      },    },  },}

    Nonaktifkan persyaratan @mention

    Secara bawaan, requireMention bernilai true. Untuk merespons semua pesan yang diizinkan:

    json5
    {  channels: {    twitch: {      accounts: {        default: {          requireMention: false,        },      },    },  },}

    Pemecahan masalah

    Pertama, jalankan perintah diagnostik:

    bash
    openclaw doctoropenclaw channels status --probe
    Bot tidak merespons pesan
    • Periksa kontrol akses: Pastikan ID pengguna Anda tercantum dalam allowFrom, atau hapus allowFrom untuk sementara dan tetapkan allowedRoles: ["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 accessToken adalah nilai token akses OAuth (prefiks oauth: bersifat opsional)
    • Pastikan token memiliki cakupan chat:read dan chat:write
    • Jika menggunakan penyegaran token, pastikan clientSecret dan refreshToken ditetapkan
    Penyegaran token tidak berfungsi

    Periksa log untuk peristiwa penyegaran:

    text
    Using env token source for mybotAccess token refreshed for user 123456 (expires in 14400s)

    Jika Anda melihat token refresh disabled (no refresh token):

    • Pastikan clientSecret disediakan
    • Pastikan refreshToken disediakan

    Konfigurasi

    Konfigurasi akun

    usernamestringrequired

    Nama pengguna bot (akun yang melakukan autentikasi).

    accessTokenstringrequired

    Token akses OAuth dengan chat:read dan chat:write (konfigurasi atau variabel lingkungan untuk akun bawaan).

    clientIdstringrequired

    ID Klien Twitch (dari Token Generator atau aplikasi Anda). Opsional dalam skema, tetapi wajib untuk terhubung.

    channelstringrequired

    Kanal yang akan dimasuki.

    enabledbooleandefault: true

    Aktifkan akun ini.

    clientSecretstring

    Opsional: untuk penyegaran token otomatis.

    refreshTokenstring

    Opsional: untuk penyegaran token otomatis.

    expiresInnumber

    Masa kedaluwarsa token dalam detik (pelacakan penyegaran).

    obtainmentTimestampnumber

    Stempel waktu saat token diperoleh (pelacakan penyegaran).

    allowFromstring[]

    Daftar izin ID pengguna. Jika ditetapkan, peran diabaikan.

    allowedRoles'Array<"moderator"
    requireMentionbooleandefault: true

    Wajibkan @mention untuk memicu bot.

    responsePrefixstring

    Penggantian prefiks respons keluar untuk akun ini.

    Opsi penyedia

    • channels.twitch.enabled - Aktifkan/nonaktifkan pemulaian kanal
    • channels.twitch.username / accessToken / clientId / channel - Konfigurasi satu akun yang disederhanakan (akun default implisit; diprioritaskan daripada accounts.default)
    • channels.twitch.accounts.<accountName> - Konfigurasi multiakun (semua bidang akun di atas)
    • channels.twitch.defaultAccount - Nama akun yang menjadi bawaan
    • channels.twitch.markdown.tables - Mode perenderan tabel Markdown (off | bullets | code | block)

    Contoh lengkap:

    json5
    {  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:

    json5
    {  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:read dan chat: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

    Was this useful?
    On this page

    On this page