Developer and self-hosted
Twitch
Підтримка чату Twitch через IRC-з’єднання. OpenClaw підключається як користувач Twitch (обліковий запис бота), щоб отримувати й надсилати повідомлення в каналах.
Вбудований Plugin
Якщо ви використовуєте старішу збірку або кастомне встановлення, яке не включає Twitch, встановіть npm-пакет напряму:
npm registry
openclaw plugins install @openclaw/twitch
Local checkout
openclaw plugins install ./path/to/local/twitch-plugin
Використовуйте пакет без версії, щоб стежити за поточним офіційним тегом випуску. Закріплюйте точну версію лише тоді, коли вам потрібне відтворюване встановлення.
Докладніше: Plugins
Швидке налаштування (для початківців)
Переконайтеся, що Plugin доступний
Поточні пакетовані випуски OpenClaw вже включають його. У старіших або кастомних встановленнях його можна додати вручну командами вище.
Створіть обліковий запис бота 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
Запустіть 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
Налаштуйте бота
Змінна середовища (лише обліковий запис за замовчуванням)
OPENCLAW_TWITCH_ACCESS_TOKEN=oauth:abc123...
Конфігурація
{
channels: {
twitch: {
enabled: true,
username: "openclaw",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "vevisk",
},
},
}
Якщо задано і змінну середовища, і конфігурацію, конфігурація має пріоритет.
Контроль доступу (рекомендовано)
{
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",
},
},
},
},
}
Контроль доступу
Список дозволених ID користувачів (найбезпечніше)
{
channels: {
twitch: {
accounts: {
default: {
allowFrom: ["123456789", "987654321"],
},
},
},
},
}
На основі ролей
{
channels: {
twitch: {
accounts: {
default: {
allowedRoles: ["moderator", "vip"],
},
},
},
},
}
allowFrom — це жорсткий список дозволених. Якщо його задано, дозволені лише ці ідентифікатори користувачів. Якщо вам потрібен доступ на основі ролей, не задавайте allowFrom і налаштуйте натомість allowedRoles.
Вимкнути вимогу @mention
За замовчуванням requireMention має значення true. Щоб вимкнути це й відповідати на всі повідомлення:
{
channels: {
twitch: {
accounts: {
default: {
requireMention: false,
},
},
},
},
}
Усунення несправностей
Спочатку запустіть діагностичні команди:
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надано
Конфігурація
Конфігурація облікового запису
usernamestringІм’я користувача бота.
accessTokenstringТокен доступу OAuth із chat:read і chat:write.
clientIdstringTwitch Client ID (з Token Generator або вашого застосунку).
channelstringrequiredКанал, до якого потрібно приєднатися.
enabledbooleanУвімкнути цей обліковий запис.
clientSecretstringНеобов’язково: для автоматичного оновлення токена.
refreshTokenstringНеобов’язково: для автоматичного оновлення токена.
expiresInnumberСтрок дії токена в секундах.
obtainmentTimestampnumberЧас отримання токена.
allowFromstring[]Список дозволених ID користувачів.
allowedRoles'Array<"moderator"requireMentionbooleanВимагати @mention.
Параметри провайдера
channels.twitch.enabled- Увімкнути/вимкнути запуск каналуchannels.twitch.username- Ім’я користувача бота (спрощена конфігурація одного облікового запису)channels.twitch.accessToken- Токен доступу OAuth (спрощена конфігурація одного облікового запису)channels.twitch.clientId- Twitch Client ID (спрощена конфігурація одного облікового запису)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).
Пов’язане
- Маршрутизація каналів — маршрутизація сеансів для повідомлень
- Огляд каналів — усі підтримувані канали
- Групи — поведінка групового чату та обмеження за згадкою
- Сполучення — автентифікація DM і потік сполучення
- Безпека — модель доступу та посилення захисту