Developer and self-hosted
Twitch
Поддержка чата Twitch через интерфейс чата Twitch (IRC) с помощью клиента Twurple. OpenClaw входит в систему под учётной записью бота Twitch, присоединяется к одному каналу для каждой настроенной учётной записи и отвечает в этом канале.
Установка
Twitch поставляется как официальный плагин и не входит в основную установку.
Реестр npm
openclaw plugins install @openclaw/twitchЛокальная рабочая копия
openclaw plugins install ./path/to/local/twitch-pluginplugins install регистрирует и включает плагин. При выборе Twitch во время openclaw onboard или openclaw channels add он устанавливается по требованию. Используйте имя пакета без версии, чтобы получать текущий выпуск; закрепляйте точную версию только для воспроизводимых установок. Требуется OpenClaw 2026.4.10 или новее.
Подробнее: Плагины
Быстрая настройка
Установите плагин
См. раздел Установка выше.
Создайте учётную запись бота Twitch
Создайте отдельную учётную запись Twitch для бота (или используйте существующую).
Создайте учётные данные
Используйте Twitch Token Generator:
- Выберите Bot Token
- Убедитесь, что выбраны области действия
chat:readиchat:write - Скопируйте Client ID и Access Token
Найдите свой идентификатор пользователя Twitch
Используйте https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/, чтобы преобразовать имя пользователя в идентификатор пользователя Twitch.
Настройте токен
- Переменная окружения:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(только для учётной записи по умолчанию) - Или конфигурация:
channels.twitch.accessToken
Если заданы оба значения, конфигурация имеет приоритет (переменная окружения используется только как резервный вариант для учётной записи по умолчанию).
Запустите Gateway
openclaw gateway runМинимальная конфигурация:
{ channels: { twitch: { enabled: true, username: "openclaw", // Учётная запись бота в Twitch (используется для аутентификации) accessToken: "oauth:abc123...", // Токен доступа OAuth (или используйте переменную окружения OPENCLAW_TWITCH_ACCESS_TOKEN) clientId: "xyz789...", // Client ID из Token Generator channel: "yourchannel", // К чату какого канала Twitch присоединиться (обязательно) allowFrom: ["123456789"], // (рекомендуется) Только ваш идентификатор пользователя Twitch }, },}Что это такое
- Канал Twitch, управляемый Gateway.
- Детерминированная маршрутизация: ответы всегда возвращаются в тот канал Twitch, откуда пришло сообщение.
- Каждому подключённому каналу соответствует изолированный ключ группового сеанса
agent:<agentId>:twitch:group:<channel>. username— учётная запись бота (которая проходит аутентификацию), аchannel— чат, к которому нужно присоединиться. Каждая запись учётной записи присоединяется ровно к одному каналу.- Токены работают как с префиксом
oauth:, так и без него; OpenClaw нормализует оба варианта (мастер настройки ожидает форматoauth:).
Обновление токена (необязательно)
Токены из Twitch Token Generator невозможно обновить с помощью OpenClaw — создайте новый токен после истечения срока действия (они действуют несколько часов; регистрация приложения не требуется).
Для автоматического обновления создайте собственное приложение в Twitch Developer Console и добавьте:
{ channels: { twitch: { clientSecret: "your_client_secret", refreshToken: "your_refresh_token", }, },}Если заданы оба значения, плагин использует провайдер аутентификации с обновлением, который продлевает токены до истечения срока действия и регистрирует каждое обновление в журнале. Без refreshToken в журнал записывается token refresh disabled (no refresh token); без clientSecret используется статический (необновляемый) токен.
Поддержка нескольких учётных записей
Используйте channels.twitch.accounts с отдельными учётными данными для каждой учётной записи. Общая схема описана в разделе Конфигурация.
Пример (одна учётная запись бота в двух каналах):
{ channels: { twitch: { accounts: { channel1: { username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "yourchannel", }, channel2: { username: "openclaw", accessToken: "oauth:def456...", clientId: "uvw012...", channel: "secondchannel", }, }, }, },}Контроль доступа
allowFrom — строгий список разрешённых идентификаторов пользователей Twitch. Если он задан, allowedRoles игнорируется; не задавайте allowFrom, чтобы вместо этого использовать доступ на основе ролей.
Доступные роли: "moderator", "owner", "vip", "subscriber", "all".
Список разрешённых идентификаторов пользователей (наиболее безопасно)
{ channels: { twitch: { accounts: { default: { allowFrom: ["123456789", "987654321"], }, }, }, },}На основе ролей
{ channels: { twitch: { accounts: { default: { allowedRoles: ["moderator", "vip"], }, }, }, },}Отключение обязательного @упоминания
По умолчанию requireMention имеет значение true. Чтобы отвечать на все разрешённые сообщения:
{ channels: { twitch: { accounts: { default: { requireMention: false, }, }, }, },}Устранение неполадок
Сначала выполните диагностические команды:
openclaw doctoropenclaw channels status --probeБот не отвечает на сообщения
- Проверьте контроль доступа: убедитесь, что ваш идентификатор пользователя указан в
allowFrom, либо временно удалитеallowFromи задайтеallowedRoles: ["all"]для проверки. - Проверьте ограничение по упоминанию: при
requireMention: true(значение по умолчанию) сообщения должны содержать @упоминание имени пользователя бота. - Убедитесь, что бот находится в канале: бот присоединяется только к каналу, указанному в
channel.
Проблемы с токеном
Ошибка "Failed to connect" или ошибки аутентификации:
- Убедитесь, что
accessTokenсодержит значение токена доступа OAuth (префиксoauth:необязателен) - Убедитесь, что у токена есть области действия
chat:readиchat:write - Если используется обновление токена, убедитесь, что заданы
clientSecretиrefreshToken
Обновление токена не работает
Проверьте журнал на наличие событий обновления:
Используется источник токена из переменной окружения для mybotТокен доступа обновлён для пользователя 123456 (срок действия истекает через 14400 с)Если отображается token refresh disabled (no refresh token):
- Убедитесь, что указано значение
clientSecret - Убедитесь, что указано значение
refreshToken
Конфигурация
Конфигурация учётной записи
usernamestringrequiredИмя пользователя бота (учётная запись, проходящая аутентификацию).
accessTokenstringrequiredТокен доступа OAuth с chat:read и chat:write (из конфигурации или переменной окружения для учётной записи по умолчанию).
clientIdstringrequiredClient ID Twitch (из Token Generator или вашего приложения). Необязателен в схеме, но требуется для подключения.
channelstringrequiredКанал, к которому нужно присоединиться.
enabledbooleandefault: trueВключить эту учётную запись.
clientSecretstringНеобязательно: для автоматического обновления токена.
refreshTokenstringНеобязательно: для автоматического обновления токена.
expiresInnumberСрок действия токена в секундах (для отслеживания обновления).
obtainmentTimestampnumberВременная метка получения токена (для отслеживания обновления).
allowFromstring[]Список разрешённых идентификаторов пользователей. Если он задан, роли игнорируются.
allowedRoles'Array<"moderator"requireMentionbooleandefault: trueТребовать @упоминание для активации бота.
responsePrefixstringПереопределение префикса исходящих ответов для этой учётной записи.
Параметры провайдера
channels.twitch.enabled— включение или отключение запуска каналаchannels.twitch.username/accessToken/clientId/channel— упрощённая конфигурация одной учётной записи (неявная учётная записьdefault; имеет приоритет надaccounts.default)channels.twitch.accounts.<accountName>— конфигурация нескольких учётных записей (все перечисленные выше поля учётной записи)channels.twitch.defaultAccount— имя учётной записи по умолчаниюchannels.twitch.markdown.tables— режим отображения таблиц Markdown (off|bullets|code|block)
Полный пример:
{ 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"], }, }, }, },}Действия инструмента
Агент может отправлять сообщения Twitch через действие send инструмента сообщений:
{ channel: "twitch", action: "send", to: "#mychannel", message: "Привет, Twitch!",}to является необязательным и по умолчанию использует настроенное для учётной записи значение channel.
Безопасность и эксплуатация
- Обращайтесь с токенами как с паролями — никогда не добавляйте токены в git.
- Используйте автоматическое обновление токенов для ботов, работающих продолжительное время.
- Используйте списки разрешённых идентификаторов пользователей, а не имена пользователей, для контроля доступа.
- Отслеживайте журнал, чтобы видеть события обновления токенов и состояние подключения.
- Минимизируйте области действия токенов — запрашивайте только
chat:readиchat:write. - Если устранить проблему не удаётся: перезапустите Gateway, предварительно убедившись, что никакой другой процесс не владеет сеансом.
Ограничения
- 500 символов на сообщение; более длинные ответы разбиваются на части по границам слов.
- Markdown удаляется перед отправкой (чат Twitch использует обычный текст; переводы строк заменяются пробелами).
- OpenClaw не добавляет собственных ограничений частоты запросов; клиент чата Twurple обрабатывает ограничения частоты Twitch.
Связанные материалы
- Маршрутизация каналов — маршрутизация сеансов для сообщений
- Обзор каналов — все поддерживаемые каналы
- Группы — поведение групповых чатов и фильтрация по упоминаниям
- Сопряжение — аутентификация в личных сообщениях и процесс сопряжения
- Безопасность — модель доступа и усиление защиты