Developer and self-hosted
Twitch
Obsługa czatu Twitch za pośrednictwem interfejsu czatu Twitch (IRC) przy użyciu klienta Twurple. OpenClaw loguje się jako konto bota Twitch, dołącza do jednego kanału na każde skonfigurowane konto i odpowiada na tym kanale.
Instalacja
Twitch jest dostarczany jako oficjalny plugin; nie jest częścią podstawowej instalacji.
Rejestr npm
openclaw plugins install @openclaw/twitchLokalna kopia repozytorium
openclaw plugins install ./path/to/local/twitch-pluginPolecenie plugins install rejestruje i włącza plugin. Wybranie Twitch podczas wykonywania openclaw onboard lub openclaw channels add instaluje go na żądanie. Użyj samej nazwy pakietu, aby korzystać z bieżącego wydania; przypnij dokładną wersję tylko w celu zapewnienia powtarzalności instalacji. Wymaga OpenClaw 2026.4.10 lub nowszego.
Szczegóły: Pluginy
Szybka konfiguracja
Zainstaluj plugin
Zobacz sekcję Instalacja powyżej.
Utwórz konto bota Twitch
Utwórz osobne konto Twitch dla bota (lub użyj istniejącego konta).
Wygeneruj dane uwierzytelniające
Użyj Generatora tokenów Twitch:
- Wybierz Bot Token
- Sprawdź, czy wybrano zakresy
chat:readichat:write - Skopiuj Client ID i Access Token
Znajdź swój identyfikator użytkownika Twitch
Użyj strony https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/, aby przekształcić nazwę użytkownika w identyfikator użytkownika Twitch.
Skonfiguruj token
- Zmienna środowiskowa:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(tylko konto domyślne) - Lub konfiguracja:
channels.twitch.accessToken
Jeśli ustawiono oba, pierwszeństwo ma konfiguracja (zmienna środowiskowa jest tylko rozwiązaniem zapasowym dla konta domyślnego).
Uruchom Gateway
openclaw gateway runMinimalna konfiguracja:
{ channels: { twitch: { enabled: true, username: "openclaw", // Konto Twitch bota (uwierzytelnia się) accessToken: "oauth:abc123...", // Token dostępu OAuth (lub użyj zmiennej środowiskowej OPENCLAW_TWITCH_ACCESS_TOKEN) clientId: "xyz789...", // Identyfikator klienta z Generatora tokenów channel: "yourchannel", // Do czatu którego kanału Twitch dołączyć (wymagane) allowFrom: ["123456789"], // (zalecane) Tylko Twój identyfikator użytkownika Twitch }, },}Czym jest
- Kanał Twitch zarządzany przez Gateway.
- Deterministyczne trasowanie: odpowiedzi zawsze wracają na kanał Twitch, z którego pochodzi wiadomość.
- Każdy kanał, do którego dołączono, jest mapowany na izolowany klucz sesji grupowej
agent:<agentId>:twitch:group:<channel>. usernameto konto bota (które się uwierzytelnia), achannelokreśla pokój czatu, do którego należy dołączyć. Jeden wpis konta dołącza dokładnie do jednego kanału.- Tokeny działają z prefiksem
oauth:lub bez niego; OpenClaw normalizuje obie formy (kreator konfiguracji oczekuje formyoauth:).
Odświeżanie tokenu (opcjonalne)
Tokeny z Generatora tokenów Twitch nie mogą być odświeżane przez OpenClaw — po wygaśnięciu należy wygenerować je ponownie (są ważne przez kilka godzin; rejestracja aplikacji nie jest wymagana).
Aby włączyć automatyczne odświeżanie, utwórz własną aplikację w Konsoli deweloperskiej Twitch i dodaj:
{ channels: { twitch: { clientSecret: "your_client_secret", refreshToken: "your_refresh_token", }, },}Gdy ustawiono obie wartości, plugin używa dostawcy uwierzytelniania z odświeżaniem, który odnawia tokeny przed wygaśnięciem i rejestruje każde odświeżenie w dzienniku. Bez refreshToken rejestruje token refresh disabled (no refresh token); bez clientSecret przełącza się na statyczny token (bez odświeżania).
Obsługa wielu kont
Użyj channels.twitch.accounts z osobnymi danymi uwierzytelniającymi dla każdego konta. 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: "yourchannel", }, channel2: { username: "openclaw", accessToken: "oauth:def456...", clientId: "uvw012...", channel: "secondchannel", }, }, }, },}Kontrola dostępu
allowFrom jest bezwzględną listą dozwolonych identyfikatorów użytkowników Twitch. Gdy jest ustawiona, allowedRoles jest ignorowane; pozostaw allowFrom bez ustawienia, aby zamiast tego używać dostępu opartego na rolach.
Dostępne role: "moderator", "owner", "vip", "subscriber", "all".
Lista dozwolonych identyfikatorów użytkowników (najbezpieczniejsza)
{ channels: { twitch: { accounts: { default: { allowFrom: ["123456789", "987654321"], }, }, }, },}Na podstawie ról
{ channels: { twitch: { accounts: { default: { allowedRoles: ["moderator", "vip"], }, }, }, },}Wyłączenie wymogu @wzmianki
Domyślna wartość requireMention to true. Aby odpowiadać na wszystkie dozwolone wiadomości:
{ channels: { twitch: { accounts: { default: { requireMention: false, }, }, }, },}Rozwiązywanie problemów
Najpierw uruchom polecenia diagnostyczne:
openclaw doctoropenclaw channels status --probeBot 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"]na potrzeby testu. - Sprawdź wymóg wzmianki: Przy
requireMention: true(wartość domyślna) wiadomości muszą zawierać @wzmiankę o nazwie użytkownika bota. - Sprawdź, czy bot jest na kanale: Bot dołącza tylko do kanału określonego w
channel.
Problemy z tokenem
Failed to connect lub błędy uwierzytelniania:
- Sprawdź, czy
accessTokenjest wartością tokenu dostępu OAuth (prefiksoauth:jest opcjonalny) - 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ź w dziennikach zdarzenia odświeżania:
Using env token source for mybotAccess 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
usernamestringrequiredNazwa użytkownika bota (konto używane do uwierzytelniania).
accessTokenstringrequiredToken dostępu OAuth z zakresami chat:read i chat:write (konfiguracja lub zmienna środowiskowa dla konta domyślnego).
clientIdstringrequiredIdentyfikator klienta Twitch (z Generatora tokenów lub Twojej aplikacji). Opcjonalny w schemacie, ale wymagany do nawiązania połączenia.
channelstringrequiredKanał, do którego należy dołączyć.
enabledbooleandefault: trueWłącz to konto.
clientSecretstringOpcjonalne: do automatycznego odświeżania tokenu.
refreshTokenstringOpcjonalne: do automatycznego odświeżania tokenu.
expiresInnumberCzas wygaśnięcia tokenu w sekundach (śledzenie odświeżania).
obtainmentTimestampnumberZnacznik czasu uzyskania tokenu (śledzenie odświeżania).
allowFromstring[]Lista dozwolonych identyfikatorów użytkowników. Po jej ustawieniu role są ignorowane.
allowedRoles'Array<"moderator"requireMentionbooleandefault: trueWymagaj @wzmianki, aby wyzwolić bota.
responsePrefixstringZastąpienie prefiksu odpowiedzi wychodzących dla tego konta.
Opcje dostawcy
channels.twitch.enabled— Włączenie/wyłączenie uruchamiania kanałuchannels.twitch.username/accessToken/clientId/channel— Uproszczona konfiguracja pojedynczego konta (niejawne kontodefault; ma pierwszeństwo przedaccounts.default)channels.twitch.accounts.<accountName>— Konfiguracja wielu kont (wszystkie pola konta wymienione powyżej)channels.twitch.defaultAccount— Nazwa konta domyślnegochannels.twitch.markdown.tables— Tryb renderowania tabel Markdown (off|bullets|code|block)
Pełny przykład:
{ 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"], }, }, }, },}Akcje narzędzia
Agent może wysyłać wiadomości Twitch za pośrednictwem narzędzia wiadomości przy użyciu akcji send:
{ channel: "twitch", action: "send", to: "#mychannel", message: "Hello Twitch!",}to jest opcjonalne i domyślnie przyjmuje wartość channel skonfigurowaną dla konta.
Bezpieczeństwo i eksploatacja
- Traktuj tokeny jak hasła — nigdy nie zatwierdzaj tokenów w git.
- Używaj automatycznego odświeżania tokenów w przypadku 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 dzienniki pod kątem zdarzeń odświeżania tokenów i stanu połączenia.
- Minimalizuj zakresy tokenów — żądaj tylko
chat:readichat:write. - W razie problemów: uruchom ponownie Gateway po potwierdzeniu, że żaden inny proces nie jest właścicielem sesji.
Ograniczenia
- 500 znaków na wiadomość; dłuższe odpowiedzi są dzielone na granicach słów.
- Markdown jest usuwany przed wysłaniem (czat Twitch używa zwykłego tekstu; znaki nowego wiersza są zastępowane spacjami).
- OpenClaw nie dodaje własnego ograniczania częstotliwości; klient czatu Twurple obsługuje limity częstotliwości Twitch.
Powiązane
- Trasowanie kanałów — trasowanie sesji dla wiadomości
- Przegląd kanałów — wszystkie obsługiwane kanały
- Grupy — zachowanie czatu grupowego i wymóg wzmianki
- Parowanie — uwierzytelnianie w wiadomościach prywatnych i proces parowania
- Bezpieczeństwo — model dostępu i wzmacnianie zabezpieczeń