Перейти к основному содержанию
Поддержка чата Twitch через IRC-соединение. OpenClaw подключается как пользователь Twitch (аккаунт бота), чтобы получать и отправлять сообщения в каналах.

Встроенный Plugin

Twitch поставляется как встроенный Plugin в текущих релизах OpenClaw, поэтому обычным пакетным сборкам не требуется отдельная установка.
Если вы используете более старую сборку или пользовательскую установку, которая исключает Twitch, установите npm-пакет напрямую:
openclaw plugins install @openclaw/twitch
Используйте пакет без версии, чтобы следовать текущему официальному тегу релиза. Закрепляйте точную версию только тогда, когда вам нужна воспроизводимая установка. Подробности: Plugins

Быстрая настройка (для начинающих)

1

Ensure plugin is available

Текущие пакетные релизы OpenClaw уже включают его. Более старые или пользовательские установки могут добавить его вручную командами выше.
2

Create a Twitch bot account

Создайте отдельный аккаунт Twitch для бота (или используйте существующий аккаунт).
3

Generate credentials

Используйте Twitch Token Generator:
  • Выберите Bot Token
  • Убедитесь, что выбраны области доступа chat:read и chat:write
  • Скопируйте Client ID и Access Token
4

Find your Twitch user ID

Используйте https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/, чтобы преобразовать имя пользователя в ID пользователя Twitch.
5

Configure the token

  • Env: OPENCLAW_TWITCH_ACCESS_TOKEN=... (только аккаунт по умолчанию)
  • Или конфиг: channels.twitch.accessToken
Если заданы оба варианта, конфиг имеет приоритет (резервный env-вариант работает только для аккаунта по умолчанию).
6

Start the gateway

Запустите Gateway с настроенным каналом.
Добавьте контроль доступа (allowFrom или allowedRoles), чтобы предотвратить запуск бота неавторизованными пользователями. Значение requireMention по умолчанию — true.
Минимальный конфиг:
{
  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/
    },
  },
}

Что это такое

  • Канал Twitch, принадлежащий Gateway.
  • Детерминированная маршрутизация: ответы всегда возвращаются в Twitch.
  • Каждый аккаунт сопоставляется с изолированным ключом сессии agent:<agentId>:twitch:<accountName>.
  • username — это аккаунт бота (который проходит аутентификацию), channel — чат, к которому нужно присоединиться.

Настройка (подробно)

Создание учетных данных

Используйте Twitch Token Generator:
  • Выберите Bot Token
  • Убедитесь, что выбраны области доступа chat:read и chat:write
  • Скопируйте Client ID и Access Token
Ручная регистрация приложения не нужна. Токены истекают через несколько часов.

Настройка бота

OPENCLAW_TWITCH_ACCESS_TOKEN=oauth:abc123...
Если заданы и env, и конфиг, конфиг имеет приоритет.

Контроль доступа (рекомендуется)

{
  channels: {
    twitch: {
      allowFrom: ["123456789"], // (recommended) Your Twitch user ID only
    },
  },
}
Предпочитайте allowFrom для жесткого списка разрешенных пользователей. Используйте allowedRoles, если нужен доступ на основе ролей. Доступные роли: "moderator", "owner", "vip", "subscriber", "all".
Почему ID пользователей? Имена пользователей могут меняться, что допускает выдачу себя за другого. ID пользователей постоянны.Найдите свой ID пользователя Twitch: https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ (Преобразуйте свое имя пользователя Twitch в ID)

Обновление токена (необязательно)

Токены из Twitch Token Generator нельзя обновлять автоматически — создавайте их заново после истечения срока действия. Для автоматического обновления токена создайте собственное приложение Twitch в Twitch Developer Console и добавьте в конфиг:
{
  channels: {
    twitch: {
      clientSecret: "your_client_secret",
      refreshToken: "your_refresh_token",
    },
  },
}
Бот автоматически обновляет токены до истечения срока действия и записывает события обновления в журнал.

Поддержка нескольких аккаунтов

Используйте channels.twitch.accounts с токенами для каждого аккаунта. Общий шаблон см. в разделе Конфигурация. Пример (один аккаунт бота в двух каналах):
{
  channels: {
    twitch: {
      accounts: {
        channel1: {
          username: "openclaw",
          accessToken: "oauth:abc123...",
          clientId: "xyz789...",
          channel: "vevisk",
        },
        channel2: {
          username: "openclaw",
          accessToken: "oauth:def456...",
          clientId: "uvw012...",
          channel: "secondchannel",
        },
      },
    },
  },
}
Каждому аккаунту нужен собственный токен (один токен на канал).

Контроль доступа

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

Устранение неполадок

Сначала выполните диагностические команды:
openclaw doctor
openclaw channels status --probe
  • Проверьте контроль доступа: Убедитесь, что ваш ID пользователя указан в allowFrom, или временно удалите allowFrom и задайте allowedRoles: ["all"] для проверки.
  • Проверьте, что бот находится в канале: Бот должен присоединиться к каналу, указанному в channel.
“Failed to connect” или ошибки аутентификации:
  • Убедитесь, что accessToken — это значение токена доступа OAuth (обычно начинается с префикса oauth:)
  • Проверьте, что у токена есть области доступа chat:read и chat:write
  • Если используется обновление токена, убедитесь, что заданы clientSecret и refreshToken
Проверьте журналы на наличие событий обновления:
Using env token source for mybot
Access token refreshed for user 123456 (expires in 14400s)
Если вы видите “token refresh disabled (no refresh token)”:
  • Убедитесь, что указан clientSecret
  • Убедитесь, что указан refreshToken

Конфиг

Конфиг аккаунта

username
string
Имя пользователя бота.
accessToken
string
Токен доступа OAuth с chat:read и chat:write.
clientId
string
Client ID Twitch (из Token Generator или вашего приложения).
channel
string
обязательно
Канал, к которому нужно присоединиться.
enabled
boolean
по умолчанию:"true"
Включить этот аккаунт.
clientSecret
string
Необязательно: для автоматического обновления токена.
refreshToken
string
Необязательно: для автоматического обновления токена.
expiresIn
number
Срок действия токена в секундах.
obtainmentTimestamp
number
Метка времени получения токена.
allowFrom
string[]
Список разрешенных ID пользователей.
allowedRoles
Array<"moderator" | "owner" | "vip" | "subscriber" | "all">
Контроль доступа на основе ролей.
requireMention
boolean
по умолчанию:"true"
Требовать @mention.

Параметры провайдера

  • channels.twitch.enabled - Включить/отключить запуск канала
  • channels.twitch.username - Имя пользователя бота (упрощенный конфиг для одного аккаунта)
  • channels.twitch.accessToken - Токен доступа OAuth (упрощенный конфиг для одного аккаунта)
  • channels.twitch.clientId - Client ID Twitch (упрощенный конфиг для одного аккаунта)
  • channels.twitch.channel - Канал, к которому нужно присоединиться (упрощенный конфиг для одного аккаунта)
  • channels.twitch.accounts.<accountName> - Конфиг для нескольких аккаунтов (все поля аккаунта выше)
Полный пример:
{
  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"],
        },
      },
    },
  },
}

Действия инструментов

Агент может вызвать twitch с действием:
  • send - Отправить сообщение в канал
Пример:
{
  action: "twitch",
  params: {
    message: "Hello Twitch!",
    to: "#mychannel",
  },
}

Безопасность и эксплуатация

  • Обращайтесь с токенами как с паролями — Никогда не коммитьте токены в git.
  • Используйте автоматическое обновление токенов для долгоживущих ботов.
  • Используйте списки разрешенных ID пользователей вместо имен пользователей для контроля доступа.
  • Отслеживайте журналы на предмет событий обновления токенов и состояния подключения.
  • Минимизируйте области доступа токенов — Запрашивайте только chat:read и chat:write.
  • Если вы застряли: перезапустите Gateway после подтверждения, что никакой другой процесс не владеет сессией.

Ограничения

  • 500 символов на сообщение (автоматически разбивается по границам слов).
  • Markdown удаляется перед разбиением.
  • Нет ограничения частоты отправки (используются встроенные ограничения частоты Twitch).

Связанные разделы