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

bash
openclaw plugins install @openclaw/twitch

Lokalna kopia repozytorium

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

Polecenie 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:read i chat: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

    bash
    openclaw gateway run
  • Minimalna konfiguracja:

    json5
    {  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>.
    • username to konto bota (które się uwierzytelnia), a channel okreś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 formy oauth:).

    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:

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

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

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

    Na podstawie ról

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

    Wyłączenie wymogu @wzmianki

    Domyślna wartość requireMention to true. Aby odpowiadać na wszystkie dozwolone wiadomości:

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

    Rozwiązywanie problemów

    Najpierw uruchom polecenia diagnostyczne:

    bash
    openclaw doctoropenclaw 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ń allowFrom i ustaw allowedRoles: ["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 accessToken jest wartością tokenu dostępu OAuth (prefiks oauth: jest opcjonalny)
    • Sprawdź, czy token ma zakresy chat:read i chat:write
    • Jeśli używasz odświeżania tokenu, sprawdź, czy ustawiono clientSecret i refreshToken
    Odświeżanie tokenu nie działa

    Sprawdź w dziennikach zdarzenia odświeżania:

    text
    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

    usernamestringrequired

    Nazwa użytkownika bota (konto używane do uwierzytelniania).

    accessTokenstringrequired

    Token dostępu OAuth z zakresami chat:read i chat:write (konfiguracja lub zmienna środowiskowa dla konta domyślnego).

    clientIdstringrequired

    Identyfikator klienta Twitch (z Generatora tokenów lub Twojej aplikacji). Opcjonalny w schemacie, ale wymagany do nawiązania połączenia.

    channelstringrequired

    Kanał, do którego należy dołączyć.

    enabledbooleandefault: true

    Włącz to konto.

    clientSecretstring

    Opcjonalne: do automatycznego odświeżania tokenu.

    refreshTokenstring

    Opcjonalne: do automatycznego odświeżania tokenu.

    expiresInnumber

    Czas wygaśnięcia tokenu w sekundach (śledzenie odświeżania).

    obtainmentTimestampnumber

    Znacznik 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: true

    Wymagaj @wzmianki, aby wyzwolić bota.

    responsePrefixstring

    Zastąpienie prefiksu odpowiedzi wychodzących dla tego konta.

    Opcje dostawcy

    • channels.twitch.enabled — Włączenie/wyłączenie uruchamiania kanału
    • channels.twitch.username / accessToken / clientId / channel — Uproszczona konfiguracja pojedynczego konta (niejawne konto default; ma pierwszeństwo przed accounts.default)
    • channels.twitch.accounts.<accountName> — Konfiguracja wielu kont (wszystkie pola konta wymienione powyżej)
    • channels.twitch.defaultAccount — Nazwa konta domyślnego
    • channels.twitch.markdown.tables — Tryb renderowania tabel Markdown (off | bullets | code | block)

    Pełny przykład:

    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"],        },      },    },  },}

    Akcje narzędzia

    Agent może wysyłać wiadomości Twitch za pośrednictwem narzędzia wiadomości przy użyciu akcji send:

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

    Was this useful?
    On this page

    On this page