Twitch (plugin)
Obsluga czatu Twitch przez polaczenie IRC. OpenClaw laczy sie jako uzytkownik Twitch (konto bota) aby odbierac i wysylac wiadomosci na kanalach.
Wymagany plugin
Twitch jest dostarczany jako plugin i nie jest dolaczony do instalacji podstawowej.
Instalacja przez CLI (rejestr npm):
openclaw plugins install @openclaw/twitch
Lokalny checkout (przy uruchomieniu z repozytorium git):
openclaw plugins install ./extensions/twitch
Szczegoly: Pluginy
Szybka konfiguracja (dla poczatkujacych)
- Utworz dedykowane konto Twitch dla bota (lub uzyj istniejacego konta).
- Wygeneruj dane logowania: Twitch Token Generator
- Wybierz Bot Token
- Sprawdz, czy zakresy
chat:readichat:writesa zaznaczone - Skopiuj Client ID i Access Token
- Znajdz swoje ID uzytkownika Twitch: https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/
- Skonfiguruj token:
- Zmienna:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(tylko domyslne konto) - Lub konfiguracja:
channels.twitch.accessToken - Jesli oba sa ustawione, konfiguracja ma pierwszenstwo (zmienna jako zastepczym tylko dla domyslnego konta).
- Zmienna:
- Uruchom gateway.
Ostrzezenie: Dodaj kontrole dostepu (
allowFromluballowedRoles) aby zapobiec wyzwalaniu bota przez nieautoryzowanych uzytkownikow.requireMentiondomyslnietrue.
Minimalna konfiguracja:
{
channels: {
twitch: {
enabled: true,
username: "openclaw", // Konto Twitch bota
accessToken: "oauth:abc123...", // OAuth Access Token (lub uzyj zmiennej OPENCLAW_TWITCH_ACCESS_TOKEN)
clientId: "xyz789...", // Client ID z Token Generator
channel: "vevisk", // Kanal czatu Twitch do dolaczenia (wymagany)
allowFrom: ["123456789"], // (zalecane) Tylko twoje ID uzytkownika Twitch - pobierz z https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/
},
},
}
Czym jest
- Kanal Twitch nalezacy do Gateway.
- Deterministyczny routing: odpowiedzi zawsze wracaja do Twitch.
- Kazde konto mapuje sie na izolowany klucz sesji
agent:<agentId>:twitch:<accountName>. usernameto konto bota (kto sie uwierzytelnia),channelto pokoj czatu do dolaczenia.
Konfiguracja (szczegolowa)
Generowanie danych logowania
Uzyj Twitch Token Generator:
- Wybierz Bot Token
- Sprawdz, czy zakresy
chat:readichat:writesa zaznaczone - Skopiuj Client ID i Access Token
Reczna rejestracja aplikacji nie jest wymagana. Tokeny wygasaja po kilku godzinach.
Konfiguracja bota
Zmienna (tylko domyslne konto):
OPENCLAW_TWITCH_ACCESS_TOKEN=oauth:abc123...
Lub konfiguracja:
{
channels: {
twitch: {
enabled: true,
username: "openclaw",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "vevisk",
},
},
}
Jesli oba (zmienna i konfiguracja) sa ustawione, konfiguracja ma pierwszenstwo.
Kontrola dostepu (zalecana)
{
channels: {
twitch: {
allowFrom: ["123456789"], // (zalecane) Tylko twoje ID uzytkownika Twitch
},
},
}
Preferuj allowFrom dla twardej listy dozwolonych. Uzyj allowedRoles zamiast tego, jesli chcesz dostep oparty na rolach.
Dostepne role: "moderator", "owner", "vip", "subscriber", "all".
Dlaczego ID uzytkownikow? Nazwy uzytkownikow moga sie zmieniac, umozliwiajac podszywanie sie. ID uzytkownikow sa trwale.
Znajdz swoje ID uzytkownika Twitch: https://www.streamweasels.com/tools/convert-twitch-username-%20to-user-id/ (Konwertuj nazwe uzytkownika Twitch na ID)
Odswiezanie tokenu (opcjonalne)
Tokeny z Twitch Token Generator nie moga byc automatycznie odswiezane - wygeneruj ponownie po wygasnieciu.
Dla automatycznego odswiezania tokenow utworz wlasna aplikacje Twitch w Twitch Developer Console i dodaj do konfiguracji:
{
channels: {
twitch: {
clientSecret: "your_client_secret",
refreshToken: "your_refresh_token",
},
},
}
Bot automatycznie odswieza tokeny przed wygasnieciem i loguje zdarzenia odswiezania.
Obsluga wielu kont
Uzyj channels.twitch.accounts z tokenami per konto. Zobacz gateway/configuration dla wspolnego wzorca.
Przyklad (jedno konto bota na dwoch kanalach):
{
channels: {
twitch: {
accounts: {
channel1: {
username: "openclaw",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "vevisk",
},
channel2: {
username: "openclaw",
accessToken: "oauth:def456...",
clientId: "uvw012...",
channel: "secondchannel",
},
},
},
},
}
Uwaga: Kazde konto potrzebuje wlasnego tokenu (jeden token na kanal).
Kontrola dostepu
Ograniczenia oparte na rolach
{
channels: {
twitch: {
accounts: {
default: {
allowedRoles: ["moderator", "vip"],
},
},
},
},
}
Lista dozwolonych po ID uzytkownika (najbezpieczniejsza)
{
channels: {
twitch: {
accounts: {
default: {
allowFrom: ["123456789", "987654321"],
},
},
},
},
}
Dostep oparty na rolach (alternatywa)
allowFrom to twarda lista dozwolonych. Gdy ustawiona, tylko te ID uzytkownikow sa dozwolone.
Jesli chcesz dostep oparty na rolach, pozostaw allowFrom nieustawione i skonfiguruj allowedRoles:
{
channels: {
twitch: {
accounts: {
default: {
allowedRoles: ["moderator"],
},
},
},
},
}
Wylaczenie wymogu @wzmianki
Domyslnie requireMention jest true. Aby wylaczyc i odpowiadac na wszystkie wiadomosci:
{
channels: {
twitch: {
accounts: {
default: {
requireMention: false,
},
},
},
},
}
Rozwiazywanie problemow
Najpierw uruchom polecenia diagnostyczne:
openclaw doctor
openclaw channels status --probe
Bot nie odpowiada na wiadomosci
Sprawdz kontrole dostepu: Upewnij sie, ze twoje ID uzytkownika jest w allowFrom, lub tymczasowo usun
allowFrom i ustaw allowedRoles: ["all"] do testowania.
Sprawdz, czy bot jest na kanale: Bot musi dolaczyc do kanalu okreslonego w channel.
Problemy z tokenem
“Failed to connect” lub bledy uwierzytelniania:
- Zweryfikuj, ze
accessTokento wartosc tokenu dostepu OAuth (zwykle zaczyna sie od prefiksuoauth:) - Sprawdz, czy token ma zakresy
chat:readichat:write - Jesli uzywasz odswiezania tokenu, sprawdz, czy
clientSecretirefreshTokensa ustawione
Odswiezanie tokenu nie dziala
Sprawdz logi pod katem zdarzen odswiezania:
Using env token source for mybot
Access token refreshed for user 123456 (expires in 14400s)
Jesli widzisz “token refresh disabled (no refresh token)”:
- Upewnij sie, ze
clientSecretjest podany - Upewnij sie, ze
refreshTokenjest podany
Konfiguracja
Konfiguracja konta:
username- Nazwa uzytkownika botaaccessToken- Token dostepu OAuth zchat:readichat:writeclientId- Twitch Client ID (z Token Generator lub twojej aplikacji)channel- Kanal do dolaczenia (wymagany)enabled- Wlacz to konto (domyslnie:true)clientSecret- Opcjonalnie: do automatycznego odswiezania tokenurefreshToken- Opcjonalnie: do automatycznego odswiezania tokenuexpiresIn- Czas wygasniecia tokenu w sekundachobtainmentTimestamp- Czas uzyskania tokenuallowFrom- Lista dozwolonych ID uzytkownikowallowedRoles- Kontrola dostepu oparta na rolach ("moderator" | "owner" | "vip" | "subscriber" | "all")requireMention- Wymagaj @wzmianki (domyslnie:true)
Opcje dostawcy:
channels.twitch.enabled- Wlaczenie/wylaczenie startu kanaluchannels.twitch.username- Nazwa uzytkownika bota (uproszczona konfiguracja jednokontowa)channels.twitch.accessToken- Token dostepu OAuth (uproszczona konfiguracja jednokontowa)channels.twitch.clientId- Twitch Client ID (uproszczona konfiguracja jednokontowa)channels.twitch.channel- Kanal do dolaczenia (uproszczona konfiguracja jednokontowa)channels.twitch.accounts.<accountName>- Konfiguracja wielokontowa (wszystkie pola konta powyzej)
Pelny przyklad:
{
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"],
},
},
},
},
}
Akcje narzedziowe
Agent moze wywolac twitch z akcja:
send- Wyslij wiadomosc na kanal
Przyklad:
{
action: "twitch",
params: {
message: "Hello Twitch!",
to: "#mychannel",
},
}
Bezpieczenstwo i operacje
- Traktuj tokeny jak hasla - Nigdy nie commituj tokenow do git
- Uzywaj automatycznego odswiezania tokenow dla dlugodzialajaych botow
- Uzywaj list dozwolonych ID uzytkownikow zamiast nazw uzytkownikow do kontroli dostepu
- Monitoruj logi pod katem zdarzen odswiezania tokenow i statusu polaczenia
- Ogranicz zakresy tokenow - Zadaj tylko
chat:readichat:write - Jesli utknales: Zrestartuj gateway po potwierdzeniu, ze zaden inny proces nie jest wlascicielem sesji
Limity
- 500 znakow na wiadomosc (automatyczne dzielenie na granicach slow)
- Markdown jest usuwany przed dzieleniem
- Brak limitowania szybkosci (uzywa wbudowanych limitow Twitch)