Skip to main content

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 รุ่นแพ็กเกจปัจจุบันรวม Plugin นี้อยู่แล้ว การติดตั้งแบบเก่าหรือแบบกำหนดเองสามารถเพิ่มได้ด้วยคำสั่งข้างต้น
2

สร้างบัญชีบอท Twitch

สร้างบัญชี Twitch แยกสำหรับบอท (หรือใช้บัญชีที่มีอยู่)
3

สร้างข้อมูลประจำตัว

ใช้ Twitch Token Generator:
  • เลือก Bot Token
  • ตรวจสอบว่าเลือกสโคป chat:read และ chat:write แล้ว
  • คัดลอก Client ID และ Access Token
4

ค้นหา ID ผู้ใช้ Twitch ของคุณ

ใช้ https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ เพื่อแปลงชื่อผู้ใช้เป็น ID ผู้ใช้ Twitch
5

กำหนดค่าโทเค็น

  • Env: OPENCLAW_TWITCH_ACCESS_TOKEN=... (บัญชีเริ่มต้นเท่านั้น)
  • หรือ config: channels.twitch.accessToken
หากตั้งค่าทั้งสองอย่าง config จะมีลำดับความสำคัญก่อน (env fallback ใช้กับบัญชีเริ่มต้นเท่านั้น)
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 Token Generator:
  • เลือก Bot Token
  • ตรวจสอบว่าเลือกสโคป chat:read และ chat:write แล้ว
  • คัดลอก Client ID และ Access Token
ไม่ต้องลงทะเบียนแอปด้วยตนเอง โทเค็นจะหมดอายุหลังจากหลายชั่วโมง

กำหนดค่าบอท

OPENCLAW_TWITCH_ACCESS_TOKEN=oauth:abc123...
หากตั้งค่าทั้ง env และ config ไว้ config จะมีลำดับความสำคัญก่อน

การควบคุมการเข้าถึง (แนะนำ)

{
  channels: {
    twitch: {
      allowFrom: ["123456789"], // (recommended) Your Twitch user ID only
    },
  },
}
แนะนำให้ใช้ allowFrom สำหรับรายการอนุญาตแบบเข้มงวด ใช้ allowedRoles แทนหากคุณต้องการการเข้าถึงตามบทบาท บทบาทที่ใช้ได้: "moderator", "owner", "vip", "subscriber", "all"
ทำไมต้องใช้ ID ผู้ใช้? ชื่อผู้ใช้สามารถเปลี่ยนได้ ซึ่งทำให้มีการแอบอ้างได้ ID ผู้ใช้เป็นค่าถาวรค้นหา ID ผู้ใช้ Twitch ของคุณ: https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ (แปลงชื่อผู้ใช้ Twitch ของคุณเป็น ID)

การรีเฟรชโทเค็น (ไม่บังคับ)

โทเค็นจาก Twitch Token Generator ไม่สามารถรีเฟรชโดยอัตโนมัติได้ - ให้สร้างใหม่เมื่อหมดอายุ สำหรับการรีเฟรชโทเค็นอัตโนมัติ ให้สร้างแอปพลิเคชัน Twitch ของคุณเองที่ Twitch Developer Console และเพิ่มลงใน config:
{
  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
  • ตรวจสอบการควบคุมการเข้าถึง: ตรวจสอบว่า ID ผู้ใช้ของคุณอยู่ใน allowFrom หรือเอา allowFrom ออกชั่วคราวแล้วตั้งค่า allowedRoles: ["all"] เพื่อทดสอบ
  • ตรวจสอบว่าบอทอยู่ในช่อง: บอทต้องเข้าร่วมช่องที่ระบุใน channel
“Failed to connect” หรือข้อผิดพลาดการยืนยันตัวตน:
  • ตรวจสอบว่า 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 แล้ว

Config

การกำหนดค่าบัญชี

username
string
ชื่อผู้ใช้บอท
accessToken
string
โทเค็นการเข้าถึง OAuth ที่มี chat:read และ chat:write
clientId
string
Twitch Client ID (จาก Token Generator หรือแอปของคุณ)
channel
string
required
ช่องที่จะเข้าร่วม
enabled
boolean
default:"true"
เปิดใช้งานบัญชีนี้
clientSecret
string
ไม่บังคับ: สำหรับการรีเฟรชโทเค็นอัตโนมัติ
refreshToken
string
ไม่บังคับ: สำหรับการรีเฟรชโทเค็นอัตโนมัติ
expiresIn
number
การหมดอายุของโทเค็นเป็นวินาที
obtainmentTimestamp
number
เวลาประทับที่ได้รับโทเค็น
allowFrom
string[]
รายการอนุญาต ID ผู้ใช้
allowedRoles
Array<"moderator" | "owner" | "vip" | "subscriber" | "all">
การควบคุมการเข้าถึงตามบทบาท
requireMention
boolean
default:"true"
ต้องมี @mention

ตัวเลือกผู้ให้บริการ

  • channels.twitch.enabled - เปิด/ปิดการเริ่มต้นช่อง
  • channels.twitch.username - ชื่อผู้ใช้บอท (config บัญชีเดียวแบบย่อ)
  • channels.twitch.accessToken - โทเค็นการเข้าถึง OAuth (config บัญชีเดียวแบบย่อ)
  • channels.twitch.clientId - Twitch Client ID (config บัญชีเดียวแบบย่อ)
  • channels.twitch.channel - ช่องที่จะเข้าร่วม (config บัญชีเดียวแบบย่อ)
  • channels.twitch.accounts.<accountName> - config หลายบัญชี (ฟิลด์บัญชีทั้งหมดข้างต้น)
ตัวอย่างแบบเต็ม:
{
  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
  • ใช้การรีเฟรชโทเค็นอัตโนมัติ สำหรับบอทที่ทำงานระยะยาว
  • ใช้รายการอนุญาต ID ผู้ใช้ แทนชื่อผู้ใช้สำหรับการควบคุมการเข้าถึง
  • ตรวจสอบล็อก สำหรับเหตุการณ์รีเฟรชโทเค็นและสถานะการเชื่อมต่อ
  • จำกัดสโคปโทเค็นให้น้อยที่สุด — ขอเฉพาะ chat:read และ chat:write
  • หากติดขัด: รีสตาร์ท Gateway หลังจากยืนยันว่าไม่มีกระบวนการอื่นเป็นเจ้าของเซสชัน

ขีดจำกัด

  • 500 อักขระ ต่อข้อความ (แบ่งเป็นส่วนอัตโนมัติที่ขอบเขตคำ)
  • Markdown จะถูกตัดออกก่อนแบ่งเป็นส่วน
  • ไม่มีการจำกัดอัตรา (ใช้ขีดจำกัดอัตราในตัวของ Twitch)

ที่เกี่ยวข้อง