Developer and self-hosted
Twitch
Підтримка чату Twitch через інтерфейс чату Twitch (IRC) за допомогою клієнта Twurple. OpenClaw входить у систему як обліковий запис бота Twitch, приєднується до одного каналу для кожного налаштованого облікового запису та відповідає в цьому каналі.
Встановлення
Twitch постачається як офіційний Plugin і не входить до базового встановлення.
реєстр npm
openclaw plugins install @openclaw/twitchЛокальна робоча копія
openclaw plugins install ./path/to/local/twitch-pluginplugins install реєструє та вмикає Plugin. Вибір Twitch під час openclaw onboard або openclaw channels add встановлює його за потреби. Використовуйте назву пакета без версії, щоб отримувати поточний випуск; фіксуйте точну версію лише для відтворюваних установлень. Потрібна версія OpenClaw 2026.4.10 або новіша.
Докладніше: Плагіни
Швидке налаштування
Установіть Plugin
Див. розділ Встановлення вище.
Створіть обліковий запис бота 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...", // Ідентифікатор клієнта з 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", }, },}Якщо задано обидва параметри, Plugin використовує постачальник автентифікації з оновленням, який поновлює токени до завершення строку їхньої дії та записує кожне оновлення в журнал. Без 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.
Проблеми з токеном
Помилка «Не вдалося підключитися» або помилки автентифікації:
- Переконайтеся, що
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 (конфігурація або змінна середовища для типового облікового запису).
clientIdstringrequiredІдентифікатор клієнта 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: "Hello Twitch!",}to є необов’язковим і за замовчуванням використовує налаштований для облікового запису channel.
Безпека та експлуатація
- Поводьтеся з токенами як із паролями — ніколи не додавайте токени до git.
- Використовуйте автоматичне оновлення токенів для ботів, що працюють тривалий час.
- Використовуйте списки дозволених ідентифікаторів користувачів замість імен користувачів для контролю доступу.
- Відстежуйте журнали щодо подій оновлення токенів і стану підключення.
- Мінімізуйте області доступу токенів — запитуйте лише
chat:readіchat:write. - Якщо виникли труднощі: перезапустіть Gateway, попередньо переконавшись, що жоден інший процес не володіє сеансом.
Обмеження
- 500 символів на повідомлення; довші відповіді розбиваються на частини за межами слів.
- Markdown видаляється перед надсиланням (чат Twitch використовує звичайний текст; переноси рядків перетворюються на пробіли).
- OpenClaw не додає власного обмеження частоти запитів; клієнт чату Twurple обробляє обмеження частоти Twitch.
Пов’язані розділи
- Маршрутизація каналів — маршрутизація сеансів для повідомлень
- Огляд каналів — усі підтримувані канали
- Групи — поведінка групового чату й обмеження за згадкою
- Сполучення — автентифікація в особистих повідомленнях і процес сполучення
- Безпека — модель доступу та посилення захисту