Developer and self-hosted
Twitch
دعم دردشة Twitch عبر اتصال IRC. يتصل OpenClaw بصفته مستخدم Twitch (حساب بوت) لاستقبال الرسائل وإرسالها في القنوات.
Plugin مضمّن
إذا كنت تستخدم إصدارًا أقدم أو تثبيتًا مخصصًا يستبعد Twitch، فثبّت حزمة npm مباشرة:
سجل npm
openclaw plugins install @openclaw/twitch
نسخة محلية
openclaw plugins install ./path/to/local/twitch-plugin
استخدم الحزمة المجردة لمتابعة وسم الإصدار الرسمي الحالي. ثبّت إصدارًا دقيقًا فقط عندما تحتاج إلى تثبيت قابل لإعادة الإنتاج.
التفاصيل: Plugins
إعداد سريع (للمبتدئين)
تأكد من توفر Plugin
إصدارات OpenClaw المعبأة الحالية تضمنه بالفعل. يمكن للتثبيتات الأقدم/المخصصة إضافته يدويًا بالأوامر أعلاه.
أنشئ حساب بوت Twitch
أنشئ حساب Twitch مخصصًا للبوت (أو استخدم حسابًا موجودًا).
أنشئ بيانات الاعتماد
استخدم مولّد رموز Twitch:
- اختر رمز البوت
- تحقق من تحديد النطاقين
chat:readوchat:write - انسخ معرّف العميل ورمز الوصول
اعثر على معرّف مستخدم 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:
- اختر رمز البوت
- تحقق من تحديد النطاقين
chat:readوchat:write - انسخ معرّف العميل ورمز الوصول
ضبط البوت
متغير البيئة (الحساب الافتراضي فقط)
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 تلقائيًا - أعد إنشاءها عند انتهاء الصلاحية.
للتحديث التلقائي للرمز، أنشئ تطبيق Twitch الخاص بك في وحدة تحكم مطوري Twitch وأضفه إلى الإعداد:
{
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",
},
},
},
},
}
التحكم في الوصول
قائمة سماح لمعرّفات المستخدمين (الأكثر أمانًا)
{
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
البوت لا يرد على الرسائل
- تحقق من التحكم في الوصول: تأكد من وجود معرّف المستخدم الخاص بك في
allowFrom، أو أزلallowFromمؤقتًا واضبطallowedRoles: ["all"]للاختبار. - تحقق من وجود البوت في القناة: يجب أن ينضم البوت إلى القناة المحددة في
channel.
مشكلات الرمز
أخطاء "فشل الاتصال" أو أخطاء المصادقة:
- تحقق من أن
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.
clientIdstringمعرّف عميل Twitch (من مولّد الرموز أو تطبيقك).
channelstringrequiredالقناة المراد الانضمام إليها.
enabledbooleanفعّل هذا الحساب.
clientSecretstringاختياري: للتحديث التلقائي للرمز.
refreshTokenstringاختياري: للتحديث التلقائي للرمز.
expiresInnumberانتهاء صلاحية الرمز بالثواني.
obtainmentTimestampnumberالطابع الزمني للحصول على الرمز.
allowFromstring[]قائمة سماح لمعرّفات المستخدمين.
allowedRoles'Array<"moderator"requireMentionbooleanيتطلب @mention.
خيارات المزوّد
channels.twitch.enabled- تفعيل/تعطيل بدء تشغيل القناةchannels.twitch.username- اسم مستخدم البوت (إعداد مبسط لحساب واحد)channels.twitch.accessToken- رمز وصول OAuth (إعداد مبسط لحساب واحد)channels.twitch.clientId- معرّف عميل 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 أبدًا.
- استخدم التحديث التلقائي للرموز للبوتات طويلة التشغيل.
- استخدم قوائم السماح لمعرّفات المستخدمين بدلًا من أسماء المستخدمين للتحكم في الوصول.
- راقب السجلات لأحداث تحديث الرموز وحالة الاتصال.
- اجعل نطاق الرموز في الحد الأدنى — اطلب فقط
chat:readوchat:write. - إذا تعثرت: أعد تشغيل Gateway بعد التأكد من عدم امتلاك أي عملية أخرى للجلسة.
الحدود
- 500 حرف لكل رسالة (تقسيم تلقائي عند حدود الكلمات).
- تتم إزالة Markdown قبل التقسيم.
- لا يوجد تحديد معدل (يستخدم حدود المعدل المدمجة في Twitch).
ذات صلة
- توجيه القنوات — توجيه الجلسات للرسائل
- نظرة عامة على القنوات — كل القنوات المدعومة
- المجموعات — سلوك دردشة المجموعات وبوابة الذكر
- الاقتران — مصادقة الرسائل المباشرة وتدفق الاقتران
- الأمان — نموذج الوصول والتقوية