Developer and self-hosted
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ها
راهاندازی سریع
نصب Plugin
بخش نصب در بالا را ببینید.
ایجاد حساب ربات Twitch
یک حساب اختصاصی Twitch برای ربات ایجاد کنید (یا از حسابی موجود استفاده کنید).
ایجاد اطلاعات احراز هویت
از Twitch Token Generator استفاده کنید:
- Bot Token را انتخاب کنید
- مطمئن شوید محدودههای
chat:readوchat:writeانتخاب شدهاند - Client ID و Access Token را کپی کنید
یافتن شناسه کاربری Twitch
برای تبدیل نام کاربری به شناسه کاربری Twitch، از https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ استفاده کنید.
پیکربندی توکن
- متغیر محیطی:
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تنظیم شدهاند
تازهسازی توکن کار نمیکند
گزارشها را برای رویدادهای تازهسازی بررسی کنید:
Using env token source for mybotAccess token refreshed for user 123456 (expires in 14400s)اگر 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 را دوباره راهاندازی کنید.
محدودیتها
- ۵۰۰ نویسه در هر پیام؛ پاسخهای طولانیتر در مرز واژهها قطعهبندی میشوند.
- Markdown پیش از ارسال حذف میشود (گفتوگوی Twitch متن ساده است؛ خطوط جدید به فاصله تبدیل میشوند).
- OpenClaw محدودسازی نرخ جداگانهای اضافه نمیکند؛ کلاینت گفتوگوی Twurple محدودیتهای نرخ Twitch را مدیریت میکند.
مرتبط
- مسیریابی کانال — مسیریابی نشست برای پیامها
- نمای کلی کانالها — همه کانالهای پشتیبانیشده
- گروهها — رفتار گفتوگوی گروهی و دروازه اشاره
- جفتسازی — احراز هویت پیام مستقیم و جریان جفتسازی
- امنیت — مدل دسترسی و مقاومسازی