Developer and self-hosted
Twitch
Obsługa czatu Twitch przez połączenie IRC. OpenClaw łączy się jako użytkownik Twitch (konto bota), aby odbierać i wysyłać wiadomości na kanałach.
Dołączony Plugin
Jeśli używasz starszej kompilacji albo instalacji niestandardowej, która wyklucza Twitch, zainstaluj pakiet npm bezpośrednio:
rejestr npm
openclaw plugins install @openclaw/twitch
Lokalny checkout
openclaw plugins install ./path/to/local/twitch-plugin
Użyj samego pakietu, aby podążać za bieżącym oficjalnym tagiem wydania. Przypnij dokładną wersję tylko wtedy, gdy potrzebujesz odtwarzalnej instalacji.
Szczegóły: Pluginy
Szybka konfiguracja (dla początkujących)
Upewnij się, że Plugin jest dostępny
Bieżące pakietowe wydania OpenClaw już go zawierają. Starsze/niestandardowe instalacje mogą dodać go ręcznie za pomocą powyższych poleceń.
Utwórz konto bota Twitch
Utwórz dedykowane konto Twitch dla bota (albo użyj istniejącego konta).
Wygeneruj dane uwierzytelniające
Użyj Twitch Token Generator:
- Wybierz Bot Token
- Sprawdź, czy wybrane są zakresy
chat:readichat:write - Skopiuj Client ID i Access Token
Znajdź swój identyfikator użytkownika Twitch
Użyj https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/, aby przekonwertować nazwę użytkownika na identyfikator użytkownika Twitch.
Skonfiguruj token
- Env:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(tylko konto domyślne) - Albo konfiguracja:
channels.twitch.accessToken
Jeśli ustawiono oba, konfiguracja ma pierwszeństwo (awaryjne użycie env dotyczy tylko konta domyślnego).
Uruchom gateway
Uruchom gateway ze skonfigurowanym kanałem.
Minimalna konfiguracja:
{
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/
},
},
}
Czym to jest
- Kanał Twitch należący do Gateway.
- Deterministyczne kierowanie: odpowiedzi zawsze wracają do Twitch.
- Każde konto mapuje się na izolowany klucz sesji
agent:<agentId>:twitch:<accountName>. usernameto konto bota (to, które się uwierzytelnia), achannelto pokój czatu, do którego należy dołączyć.
Konfiguracja (szczegółowa)
Wygeneruj dane uwierzytelniające
Użyj Twitch Token Generator:
- Wybierz Bot Token
- Sprawdź, czy wybrane są zakresy
chat:readichat:write - Skopiuj Client ID i Access Token
Skonfiguruj bota
Zmienna env (tylko konto domyślne)
OPENCLAW_TWITCH_ACCESS_TOKEN=oauth:abc123...
Konfiguracja
{
channels: {
twitch: {
enabled: true,
username: "openclaw",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "vevisk",
},
},
}
Jeśli ustawiono zarówno env, jak i konfigurację, konfiguracja ma pierwszeństwo.
Kontrola dostępu (zalecana)
{
channels: {
twitch: {
allowFrom: ["123456789"], // (recommended) Your Twitch user ID only
},
},
}
Preferuj allowFrom jako ścisłą listę dozwolonych. Zamiast tego użyj allowedRoles, jeśli chcesz kontroli dostępu opartej na rolach.
Dostępne role: "moderator", "owner", "vip", "subscriber", "all".
Odświeżanie tokenu (opcjonalne)
Tokenów z Twitch Token Generator nie można odświeżać automatycznie - wygeneruj je ponownie po wygaśnięciu.
Aby automatycznie odświeżać token, utwórz własną aplikację Twitch w Twitch Developer Console i dodaj do konfiguracji:
{
channels: {
twitch: {
clientSecret: "your_client_secret",
refreshToken: "your_refresh_token",
},
},
}
Bot automatycznie odświeża tokeny przed wygaśnięciem i zapisuje zdarzenia odświeżania w logach.
Obsługa wielu kont
Użyj channels.twitch.accounts z tokenami dla poszczególnych kont. Wspólny wzorzec opisano w sekcji Konfiguracja.
Przykład (jedno konto bota na dwóch kanałach):
{
channels: {
twitch: {
accounts: {
channel1: {
username: "openclaw",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "vevisk",
},
channel2: {
username: "openclaw",
accessToken: "oauth:def456...",
clientId: "uvw012...",
channel: "secondchannel",
},
},
},
},
}
Kontrola dostępu
Lista dozwolonych identyfikatorów użytkowników (najbezpieczniejsza)
{
channels: {
twitch: {
accounts: {
default: {
allowFrom: ["123456789", "987654321"],
},
},
},
},
}
Oparta na rolach
{
channels: {
twitch: {
accounts: {
default: {
allowedRoles: ["moderator", "vip"],
},
},
},
},
}
allowFrom to ścisła lista dozwolonych. Gdy jest ustawiona, dozwolone są tylko te identyfikatory użytkowników. Jeśli chcesz dostępu opartego na rolach, pozostaw allowFrom nieustawione i zamiast tego skonfiguruj allowedRoles.
Wyłącz wymaganie @wzmianki
Domyślnie requireMention ma wartość true. Aby wyłączyć to ustawienie i odpowiadać na wszystkie wiadomości:
{
channels: {
twitch: {
accounts: {
default: {
requireMention: false,
},
},
},
},
}
Rozwiązywanie problemów
Najpierw uruchom polecenia diagnostyczne:
openclaw doctor
openclaw channels status --probe
Bot nie odpowiada na wiadomości
- Sprawdź kontrolę dostępu: Upewnij się, że Twój identyfikator użytkownika znajduje się w
allowFrom, albo tymczasowo usuńallowFromi ustawallowedRoles: ["all"], aby przetestować. - Sprawdź, czy bot jest na kanale: Bot musi dołączyć do kanału określonego w
channel.
Problemy z tokenem
"Nie udało się połączyć" lub błędy uwierzytelniania:
- Sprawdź, czy
accessTokenjest wartością tokenu dostępu OAuth (zwykle zaczyna się od prefiksuoauth:) - Sprawdź, czy token ma zakresy
chat:readichat:write - Jeśli używasz odświeżania tokenu, sprawdź, czy ustawiono
clientSecretirefreshToken
Odświeżanie tokenu nie działa
Sprawdź logi pod kątem zdarzeń odświeżania:
Using env token source for mybot
Access token refreshed for user 123456 (expires in 14400s)
Jeśli widzisz "token refresh disabled (no refresh token)":
- Upewnij się, że podano
clientSecret - Upewnij się, że podano
refreshToken
Konfiguracja
Konfiguracja konta
usernamestringNazwa użytkownika bota.
accessTokenstringToken dostępu OAuth z chat:read i chat:write.
clientIdstringTwitch Client ID (z Token Generator lub Twojej aplikacji).
channelstringrequiredKanał, do którego należy dołączyć.
enabledbooleanWłącz to konto.
clientSecretstringOpcjonalnie: do automatycznego odświeżania tokenu.
refreshTokenstringOpcjonalnie: do automatycznego odświeżania tokenu.
expiresInnumberWygaśnięcie tokenu w sekundach.
obtainmentTimestampnumberZnacznik czasu uzyskania tokenu.
allowFromstring[]Lista dozwolonych identyfikatorów użytkowników.
allowedRoles'Array<"moderator"requireMentionbooleanWymagaj @wzmianki.
Opcje dostawcy
channels.twitch.enabled- Włącz/wyłącz uruchamianie kanałuchannels.twitch.username- Nazwa użytkownika bota (uproszczona konfiguracja jednego konta)channels.twitch.accessToken- Token dostępu OAuth (uproszczona konfiguracja jednego konta)channels.twitch.clientId- Twitch Client ID (uproszczona konfiguracja jednego konta)channels.twitch.channel- Kanał, do którego należy dołączyć (uproszczona konfiguracja jednego konta)channels.twitch.accounts.<accountName>- Konfiguracja wielu kont (wszystkie pola konta powyżej)
Pełny przykład:
{
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 narzędzia
Agent może wywołać twitch z akcją:
send- Wyślij wiadomość do kanału
Przykład:
{
action: "twitch",
params: {
message: "Hello Twitch!",
to: "#mychannel",
},
}
Bezpieczeństwo i operacje
- Traktuj tokeny jak hasła — nigdy nie commituj tokenów do git.
- Używaj automatycznego odświeżania tokenów dla długo działających botów.
- Używaj list dozwolonych identyfikatorów użytkowników zamiast nazw użytkowników do kontroli dostępu.
- Monitoruj logi pod kątem zdarzeń odświeżania tokenu i stanu połączenia.
- Ogranicz zakres tokenów do minimum — żądaj tylko
chat:readichat:write. - Jeśli utkniesz: uruchom ponownie gateway po potwierdzeniu, że żaden inny proces nie jest właścicielem sesji.
Limity
- 500 znaków na wiadomość (automatycznie dzielone na fragmenty na granicach słów).
- Markdown jest usuwany przed dzieleniem na fragmenty.
- Brak ograniczania częstotliwości (używa wbudowanych limitów Twitch).
Powiązane
- Kierowanie kanałów — kierowanie sesji dla wiadomości
- Omówienie kanałów — wszystkie obsługiwane kanały
- Grupy — zachowanie czatu grupowego i bramkowanie wzmianek
- Parowanie — uwierzytelnianie DM i przepływ parowania
- Bezpieczeństwo — model dostępu i utwardzanie