Developer and self-hosted
Twitch
پشتیبانی از چت Twitch از طریق اتصال IRC. OpenClaw بهعنوان یک کاربر Twitch (حساب bot) وصل میشود تا پیامها را در کانالها دریافت و ارسال کند.
Plugin همراه
اگر روی build قدیمیتر هستید یا نصب سفارشیای دارید که Twitch را حذف کرده است، بسته npm را مستقیما نصب کنید:
npm registry
openclaw plugins install @openclaw/twitch
Local checkout
openclaw plugins install ./path/to/local/twitch-plugin
از بسته خام استفاده کنید تا برچسب انتشار رسمی فعلی را دنبال کنید. فقط زمانی یک نسخه دقیق را pin کنید که به نصب قابل بازتولید نیاز دارید.
جزئیات: Plugins
راهاندازی سریع (مبتدی)
مطمئن شوید Plugin در دسترس است
نسخههای بستهبندیشده فعلی OpenClaw از قبل آن را همراه دارند. نصبهای قدیمیتر/سفارشی میتوانند با دستورهای بالا آن را دستی اضافه کنند.
یک حساب bot در Twitch بسازید
یک حساب Twitch اختصاصی برای bot بسازید (یا از یک حساب موجود استفاده کنید).
اعتبارنامهها را ایجاد کنید
از Twitch Token Generator استفاده کنید:
- Bot Token را انتخاب کنید
- بررسی کنید scopeهای
chat:readوchat:writeانتخاب شده باشند - Client ID و Access Token را کپی کنید
شناسه کاربری Twitch خود را پیدا کنید
از https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ برای تبدیل نام کاربری به شناسه کاربری Twitch استفاده کنید.
توکن را پیکربندی کنید
- Env:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(فقط حساب پیشفرض) - یا config:
channels.twitch.accessToken
اگر هر دو تنظیم شده باشند، config اولویت دارد (fallback به env فقط برای حساب پیشفرض است).
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حساب bot است (کسی که احراز هویت میکند)،channelاتاق چتی است که باید به آن ملحق شود.
راهاندازی (جزئیات)
ایجاد اعتبارنامهها
از Twitch Token Generator استفاده کنید:
- Bot Token را انتخاب کنید
- بررسی کنید scopeهای
chat:readوchat:writeانتخاب شده باشند - Client ID و Access Token را کپی کنید
پیکربندی bot
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 و config تنظیم شده باشند، config اولویت دارد.
کنترل دسترسی (توصیهشده)
{
channels: {
twitch: {
allowFrom: ["123456789"], // (recommended) Your Twitch user ID only
},
},
}
برای allowlist سختگیرانه، allowFrom را ترجیح دهید. اگر دسترسی مبتنی بر نقش میخواهید، بهجای آن از allowedRoles استفاده کنید.
نقشهای موجود: "moderator"، "owner"، "vip"، "subscriber"، "all".
تازهسازی توکن (اختیاری)
توکنهای Twitch Token Generator بهصورت خودکار تازهسازی نمیشوند - هنگام انقضا دوباره ایجادشان کنید.
برای تازهسازی خودکار توکن، برنامه Twitch خودتان را در Twitch Developer Console بسازید و به config اضافه کنید:
{
channels: {
twitch: {
clientSecret: "your_client_secret",
refreshToken: "your_refresh_token",
},
},
}
bot توکنها را پیش از انقضا بهصورت خودکار تازهسازی میکند و رویدادهای تازهسازی را log میکند.
پشتیبانی چندحسابی
از channels.twitch.accounts با توکنهای اختصاصی هر حساب استفاده کنید. برای الگوی مشترک، پیکربندی را ببینید.
مثال (یک حساب bot در دو کانال):
{
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 یک allowlist سختگیرانه است. وقتی تنظیم شود، فقط آن شناسههای کاربری مجاز هستند. اگر دسترسی مبتنی بر نقش میخواهید، allowFrom را تنظیم نکنید و بهجای آن allowedRoles را پیکربندی کنید.
Disable @mention requirement
بهصورت پیشفرض، requireMention برابر true است. برای غیرفعالکردن و پاسخ به همه پیامها:
{
channels: {
twitch: {
accounts: {
default: {
requireMention: false,
},
},
},
},
}
عیبیابی
ابتدا، دستورهای تشخیصی را اجرا کنید:
openclaw doctor
openclaw channels status --probe
Bot به پیامها پاسخ نمیدهد
- کنترل دسترسی را بررسی کنید: مطمئن شوید شناسه کاربری شما در
allowFromاست، یا برای آزمایش، موقتاallowFromرا حذف کنید وallowedRoles: ["all"]را تنظیم کنید. - بررسی کنید bot در کانال باشد: bot باید به کانالی که در
channelمشخص شده است ملحق شود.
مشکلات توکن
«اتصال ناموفق بود» یا خطاهای احراز هویت:
- بررسی کنید
accessTokenمقدار توکن دسترسی OAuth باشد (معمولا با پیشوندoauth:شروع میشود) - بررسی کنید توکن scopeهای
chat:readوchat:writeرا داشته باشد - اگر از تازهسازی توکن استفاده میکنید، بررسی کنید
clientSecretوrefreshTokenتنظیم شده باشند
تازهسازی توکن کار نمیکند
logها را برای رویدادهای تازهسازی بررسی کنید:
Using env token source for mybot
Access token refreshed for user 123456 (expires in 14400s)
اگر «token refresh disabled (no refresh token)» را میبینید:
- مطمئن شوید
clientSecretارائه شده است - مطمئن شوید
refreshTokenارائه شده است
Config
پیکربندی حساب
usernamestringنام کاربری bot.
accessTokenstringتوکن دسترسی OAuth با chat:read و chat:write.
clientIdstringClient ID مربوط به Twitch (از Token Generator یا app خودتان).
channelstringrequiredکانالی که باید به آن ملحق شد.
enabledbooleanاین حساب را فعال کنید.
clientSecretstringاختیاری: برای تازهسازی خودکار توکن.
refreshTokenstringاختیاری: برای تازهسازی خودکار توکن.
expiresInnumberزمان انقضای توکن بر حسب ثانیه.
obtainmentTimestampnumbertimestamp دریافت توکن.
allowFromstring[]allowlist شناسه کاربری.
allowedRoles'Array<"moderator"requireMentionboolean@mention را الزامی کنید.
گزینههای Provider
channels.twitch.enabled- فعال/غیرفعالکردن شروع کانالchannels.twitch.username- نام کاربری bot (پیکربندی سادهشده تکحسابی)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"],
},
},
},
},
}
کنشهای ابزار
agent میتواند twitch را با action زیر فراخوانی کند:
send- ارسال پیام به یک کانال
مثال:
{
action: "twitch",
params: {
message: "Hello Twitch!",
to: "#mychannel",
},
}
ایمنی و عملیات
- با توکنها مثل گذرواژه برخورد کنید — هرگز توکنها را در git commit نکنید.
- برای botهای طولانیمدت از تازهسازی خودکار توکن استفاده کنید.
- برای کنترل دسترسی، بهجای نام کاربری از allowlistهای شناسه کاربری استفاده کنید.
- logها را برای رویدادهای تازهسازی توکن و وضعیت اتصال پایش کنید.
- scope توکنها را حداقلی نگه دارید — فقط
chat:readوchat:writeرا درخواست کنید. - اگر گیر کردید: پس از تأیید اینکه هیچ فرایند دیگری مالک جلسه نیست، Gateway را راهاندازی مجدد کنید.
محدودیتها
- ۵۰۰ نویسه برای هر پیام (بهصورت خودکار در مرز واژهها chunk میشود).
- Markdown پیش از chunk کردن حذف میشود.
- بدون محدودسازی نرخ (از محدودیتهای نرخ داخلی Twitch استفاده میکند).
مرتبط
- مسیریابی کانال — مسیریابی جلسه برای پیامها
- نمای کلی کانالها — همه کانالهای پشتیبانیشده
- گروهها — رفتار چت گروهی و gating مبتنی بر mention
- Pairing — احراز هویت DM و جریان pairing
- امنیت — مدل دسترسی و سختسازی