Developer and self-hosted
Twitch
รองรับแชท Twitch ผ่านการเชื่อมต่อ IRC OpenClaw เชื่อมต่อในฐานะผู้ใช้ Twitch (บัญชีบอท) เพื่อรับและส่งข้อความในช่องต่างๆ
Plugin ที่รวมมาด้วย
หากคุณใช้บิลด์เก่ากว่าหรือการติดตั้งแบบกำหนดเองที่ไม่รวม Twitch ให้ติดตั้งแพ็กเกจ npm โดยตรง:
npm registry
openclaw plugins install @openclaw/twitch
Local checkout
openclaw plugins install ./path/to/local/twitch-plugin
ใช้แพ็กเกจเปล่าเพื่อติดตามแท็กรุ่นทางการปัจจุบัน ปักหมุดเวอร์ชันที่แน่นอน เฉพาะเมื่อคุณต้องการการติดตั้งที่ทำซ้ำได้เท่านั้น
รายละเอียด: Plugins
การตั้งค่าแบบรวดเร็ว (ผู้เริ่มต้น)
ตรวจสอบว่า Plugin พร้อมใช้งาน
OpenClaw รุ่นแพ็กเกจปัจจุบันรวม Plugin นี้อยู่แล้ว การติดตั้งแบบเก่าหรือแบบกำหนดเองสามารถเพิ่มได้ด้วยคำสั่งข้างต้น
สร้างบัญชีบอท Twitch
สร้างบัญชี Twitch แยกสำหรับบอท (หรือใช้บัญชีที่มีอยู่)
สร้างข้อมูลประจำตัว
- เลือก Bot Token
- ตรวจสอบว่าเลือกสโคป
chat:readและchat:writeแล้ว - คัดลอก Client ID และ Access Token
ค้นหา ID ผู้ใช้ Twitch ของคุณ
ใช้ https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ เพื่อแปลงชื่อผู้ใช้เป็น ID ผู้ใช้ Twitch
กำหนดค่าโทเค็น
- Env:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(บัญชีเริ่มต้นเท่านั้น) - หรือ config:
channels.twitch.accessToken
หากตั้งค่าทั้งสองอย่าง config จะมีลำดับความสำคัญก่อน (env fallback ใช้กับบัญชีเริ่มต้นเท่านั้น)
เริ่มต้น 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คือห้องแชทที่จะเข้าร่วม
การตั้งค่า (ละเอียด)
สร้างข้อมูลประจำตัว
- เลือก Bot Token
- ตรวจสอบว่าเลือกสโคป
chat:readและchat:writeแล้ว - คัดลอก Client ID และ Access Token
กำหนดค่าบอท
Env var (บัญชีเริ่มต้นเท่านั้น)
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
},
},
}
แนะนำให้ใช้ 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",
},
},
}
บอทจะรีเฟรชโทเค็นโดยอัตโนมัติก่อนหมดอายุและบันทึกเหตุการณ์รีเฟรชลงในล็อก
การรองรับหลายบัญชี
ใช้ 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",
},
},
},
},
}
การควบคุมการเข้าถึง
รายการอนุญาต ID ผู้ใช้ (ปลอดภัยที่สุด)
{
channels: {
twitch: {
accounts: {
default: {
allowFrom: ["123456789", "987654321"],
},
},
},
},
}
ตามบทบาท
{
channels: {
twitch: {
accounts: {
default: {
allowedRoles: ["moderator", "vip"],
},
},
},
},
}
allowFrom เป็นรายการอนุญาตแบบเข้มงวด เมื่อตั้งค่าแล้ว จะอนุญาตเฉพาะ ID ผู้ใช้เหล่านั้น หากคุณต้องการการเข้าถึงตามบทบาท ให้ไม่ต้องตั้งค่า allowFrom และกำหนดค่า allowedRoles แทน
ปิดข้อกำหนด @mention
โดยค่าเริ่มต้น requireMention เป็น true หากต้องการปิดและตอบกลับทุกข้อความ:
{
channels: {
twitch: {
accounts: {
default: {
requireMention: false,
},
},
},
},
}
การแก้ปัญหา
ก่อนอื่น ให้รันคำสั่งวินิจฉัย:
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
การกำหนดค่าบัญชี
usernamestringชื่อผู้ใช้บอท
accessTokenstringโทเค็นการเข้าถึง OAuth ที่มี chat:read และ chat:write
clientIdstringTwitch Client ID (จาก Token Generator หรือแอปของคุณ)
channelstringrequiredช่องที่จะเข้าร่วม
enabledbooleanเปิดใช้งานบัญชีนี้
clientSecretstringไม่บังคับ: สำหรับการรีเฟรชโทเค็นอัตโนมัติ
refreshTokenstringไม่บังคับ: สำหรับการรีเฟรชโทเค็นอัตโนมัติ
expiresInnumberการหมดอายุของโทเค็นเป็นวินาที
obtainmentTimestampnumberเวลาประทับที่ได้รับโทเค็น
allowFromstring[]รายการอนุญาต ID ผู้ใช้
allowedRoles'Array<"moderator"requireMentionbooleanต้องมี @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)
ที่เกี่ยวข้อง
- การกำหนดเส้นทางช่อง — การกำหนดเส้นทางเซสชันสำหรับข้อความ
- ภาพรวมช่อง — ช่องทั้งหมดที่รองรับ
- กลุ่ม — พฤติกรรมแชทกลุ่มและการกำหนดให้ต้อง mention
- การจับคู่ — การยืนยันตัวตน DM และโฟลว์การจับคู่
- ความปลอดภัย — โมเดลการเข้าถึงและการเสริมความปลอดภัย