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).

    ذات صلة