Developer and self-hosted
Twitch
Поддержка чата Twitch через IRC-соединение. OpenClaw подключается как пользователь Twitch (аккаунт бота), чтобы получать и отправлять сообщения в каналах.
Встроенный Plugin
Если вы используете более старую сборку или пользовательскую установку, которая исключает Twitch, установите npm-пакет напрямую:
npm registry
openclaw plugins install @openclaw/twitchLocal checkout
openclaw plugins install ./path/to/local/twitch-pluginИспользуйте пакет без версии, чтобы следовать текущему официальному тегу релиза. Закрепляйте точную версию только тогда, когда вам нужна воспроизводимая установка.
Подробности: Plugins
Быстрая настройка (для начинающих)
Ensure plugin is available
Текущие пакетные релизы OpenClaw уже включают его. Более старые или пользовательские установки могут добавить его вручную командами выше.
Create a Twitch bot account
Создайте отдельный аккаунт Twitch для бота (или используйте существующий аккаунт).
Generate credentials
Используйте Twitch Token Generator:
- Выберите Bot Token
- Убедитесь, что выбраны области доступа
chat:readиchat:write - Скопируйте Client ID и Access Token
Find your Twitch user ID
Используйте https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/, чтобы преобразовать имя пользователя в ID пользователя Twitch.
Configure the token
- Env:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(только аккаунт по умолчанию) - Или конфиг:
channels.twitch.accessToken
Если заданы оба варианта, конфиг имеет приоритет (резервный env-вариант работает только для аккаунта по умолчанию).
Start the gateway
Запустите Gateway с настроенным каналом.
Минимальный конфиг:
{ 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
Настройка бота
Env var (default account only)
OPENCLAW_TWITCH_ACCESS_TOKEN=oauth:abc123...Config
{ channels: { twitch: { enabled: true, username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "vevisk", }, },}Если заданы и env, и конфиг, конфиг имеет приоритет.
Контроль доступа (рекомендуется)
{ channels: { twitch: { allowFrom: ["123456789"], // (recommended) Your Twitch user ID only }, },}Предпочитайте allowFrom для жесткого списка разрешенных пользователей. Используйте allowedRoles, если нужен доступ на основе ролей.
Доступные роли: "moderator", "owner", "vip", "subscriber", "all".
Обновление токена (необязательно)
Токены из 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", }, }, }, },}Контроль доступа
User ID allowlist (most secure)
{ channels: { twitch: { accounts: { default: { allowFrom: ["123456789", "987654321"], }, }, }, },}Role-based
{ channels: { twitch: { accounts: { default: { allowedRoles: ["moderator", "vip"], }, }, }, },}allowFrom — это жесткий список разрешенных пользователей. Если он задан, разрешены только эти ID пользователей. Если вам нужен доступ на основе ролей, не задавайте allowFrom и вместо этого настройте allowedRoles.
Disable @mention requirement
По умолчанию requireMention равно true. Чтобы отключить это требование и отвечать на все сообщения:
{ channels: { twitch: { accounts: { default: { requireMention: false, }, }, }, },}Устранение неполадок
Сначала выполните диагностические команды:
openclaw doctoropenclaw channels status --probeBot does not respond to messages
- Проверьте контроль доступа: Убедитесь, что ваш ID пользователя указан в
allowFrom, или временно удалитеallowFromи задайтеallowedRoles: ["all"]для проверки. - Проверьте, что бот находится в канале: Бот должен присоединиться к каналу, указанному в
channel.
Token issues
"Failed to connect" или ошибки аутентификации:
- Убедитесь, что
accessToken— это значение токена доступа OAuth (обычно начинается с префиксаoauth:) - Проверьте, что у токена есть области доступа
chat:readиchat:write - Если используется обновление токена, убедитесь, что заданы
clientSecretиrefreshToken
Token refresh not working
Проверьте журналы на наличие событий обновления:
Using env token source for mybotAccess token refreshed for user 123456 (expires in 14400s)Если вы видите "token refresh disabled (no refresh token)":
- Убедитесь, что указан
clientSecret - Убедитесь, что указан
refreshToken
Конфиг
Конфиг аккаунта
usernamestringИмя пользователя бота.
accessTokenstringТокен доступа OAuth с chat:read и chat:write.
clientIdstringClient ID Twitch (из Token Generator или вашего приложения).
channelstringrequiredКанал, к которому нужно присоединиться.
enabledbooleandefault: trueВключить этот аккаунт.
clientSecretstringНеобязательно: для автоматического обновления токена.
refreshTokenstringНеобязательно: для автоматического обновления токена.
expiresInnumberСрок действия токена в секундах.
obtainmentTimestampnumberМетка времени получения токена.
allowFromstring[]Список разрешенных ID пользователей.
allowedRoles'Array<"moderator"requireMentionbooleandefault: 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).
Связанные разделы
- Маршрутизация каналов — маршрутизация сессий для сообщений
- Обзор каналов — все поддерживаемые каналы
- Группы — поведение групповых чатов и ограничение по упоминанию
- Pairing — аутентификация в DM и процесс Pairing
- Безопасность — модель доступа и усиление защиты