الانتقال إلى المحتوى الرئيسي

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

دعم دردشة Twitch عبر اتصال IRC. يتصل OpenClaw بصفته مستخدم Twitch (حساب بوت) لاستقبال الرسائل وإرسالها في القنوات.

Plugin مضمّن

يأتي Twitch بصفته Plugin مضمّنًا في إصدارات OpenClaw الحالية، لذلك لا تحتاج الإصدارات المعبأة العادية إلى تثبيت منفصل.
إذا كنت تستخدم إصدارًا أقدم أو تثبيتًا مخصصًا يستبعد Twitch، فثبّت حزمة npm مباشرة:
openclaw plugins install @openclaw/twitch
استخدم الحزمة المجردة لمتابعة وسم الإصدار الرسمي الحالي. ثبّت إصدارًا دقيقًا فقط عندما تحتاج إلى تثبيت قابل لإعادة الإنتاج. التفاصيل: Plugins

إعداد سريع (للمبتدئين)

1

تأكد من توفر Plugin

إصدارات OpenClaw المعبأة الحالية تضمنه بالفعل. يمكن للتثبيتات الأقدم/المخصصة إضافته يدويًا بالأوامر أعلاه.
2

أنشئ حساب بوت Twitch

أنشئ حساب Twitch مخصصًا للبوت (أو استخدم حسابًا موجودًا).
3

أنشئ بيانات الاعتماد

استخدم مولّد رموز Twitch:
  • اختر رمز البوت
  • تحقق من تحديد النطاقين chat:read وchat:write
  • انسخ معرّف العميل ورمز الوصول
4

اعثر على معرّف مستخدم Twitch الخاص بك

استخدم https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ لتحويل اسم مستخدم إلى معرّف مستخدم Twitch.
5

اضبط الرمز

  • متغير البيئة: OPENCLAW_TWITCH_ACCESS_TOKEN=... (الحساب الافتراضي فقط)
  • أو الإعداد: channels.twitch.accessToken
إذا تم ضبطهما معًا، تكون للأعداد أولوية (الرجوع إلى متغير البيئة للحساب الافتراضي فقط).
6

شغّل Gateway

شغّل Gateway بالقناة المضبوطة.
أضف تحكمًا في الوصول (allowFrom أو allowedRoles) لمنع المستخدمين غير المصرح لهم من تشغيل البوت. القيمة الافتراضية لـrequireMention هي true.
الحد الأدنى من الإعداد:
{
  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: {
      allowFrom: ["123456789"], // (recommended) Your Twitch user ID only
    },
  },
}
فضّل allowFrom لقائمة سماح صارمة. استخدم allowedRoles بدلًا من ذلك إذا كنت تريد وصولًا قائمًا على الأدوار. الأدوار المتاحة: "moderator"، "owner"، "vip"، "subscriber"، "all".
لماذا معرّفات المستخدمين؟ يمكن أن تتغير أسماء المستخدمين، مما يسمح بانتحال الهوية. معرّفات المستخدمين دائمة.اعثر على معرّف مستخدم Twitch الخاص بك: https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ (حوّل اسم مستخدم Twitch الخاص بك إلى معرّف)

تحديث الرمز (اختياري)

لا يمكن تحديث الرموز من مولّد رموز 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"],
        },
      },
    },
  },
}

استكشاف الأخطاء وإصلاحها

أولًا، شغّل أوامر التشخيص:
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

الإعدادات

إعداد الحساب

username
string
اسم مستخدم البوت.
accessToken
string
رمز وصول OAuth مع chat:read وchat:write.
clientId
string
معرّف عميل Twitch (من مولّد الرموز أو تطبيقك).
channel
string
مطلوب
القناة المراد الانضمام إليها.
enabled
boolean
افتراضي:"true"
فعّل هذا الحساب.
clientSecret
string
اختياري: للتحديث التلقائي للرمز.
refreshToken
string
اختياري: للتحديث التلقائي للرمز.
expiresIn
number
انتهاء صلاحية الرمز بالثواني.
obtainmentTimestamp
number
الطابع الزمني للحصول على الرمز.
allowFrom
string[]
قائمة سماح لمعرّفات المستخدمين.
allowedRoles
Array<"moderator" | "owner" | "vip" | "subscriber" | "all">
تحكم في الوصول قائم على الأدوار.
requireMention
boolean
افتراضي:"true"
يتطلب @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).

ذات صلة