เอกสารอ้างอิงอีเวนต์สด

หน้านี้อธิบายข้อมูลอีเวนต์มาตรฐานที่ Social Stream Ninja ส่งสำหรับแพลตฟอร์มหลัก ใช้เป็นแหล่งอ้างอิงร่วมเมื่อเชื่อมแหล่งใหม่ แก้ปัญหาการเชื่อมต่อ หรือจัดป้าย UI ให้ตรงกัน สำหรับตารางสรุปสั้นที่เน้นผู้ใช้ข้อมูล ดู ความเข้ากันได้ของอีเวนต์และการแจ้งเตือน.

สำคัญ: อีเวนต์ที่ใช้ได้ขึ้นอยู่กับแหล่งข้อมูล สิทธิ์ และการตั้งค่าจับข้อมูล หากต้องการซ่อนแถวที่ระบุอีเวนต์ในแผงด็อกหรือโอเวอร์เลย์ Featured ให้เพิ่ม &hideevents หรือ &hideallevents หากต้องการซ่อนอีเวนต์ที่เลือก ใช้ &filterevents=subscription_gift,new_follower,gifted ตัวกรองเหล่านี้ซ่อนแถวที่มีการชำระเงินซึ่งมีค่าได้ด้วย event; แถวบริจาคปกติที่ไม่มีตัวระบุอีเวนต์จะไม่ตรงกับตัวกรองอีเวนต์ ตัวกรองข้อความอื่นยังมีผล
เลือกวิธีจับข้อมูล: สำหรับ YouTube, Twitch และ Kick, โหมด WebSocket โดยทั่วไปครอบคลุมอีเวนต์มากกว่า การจับ DOM มาตรฐานอ่านแถวและการ์ดที่แสดงจริงในหน้า YouTube Super Chats, Super Stickers และของขวัญ Jewel มีเส้นทางจับข้อมูลทั้งสองโหมด อีเวนต์ของขวัญ ทิป และสมาชิกอื่นแตกต่างตามแหล่ง ดูตารางแพลตฟอร์มสำหรับเส้นทางที่รองรับและการตั้งค่าที่จำเป็น
กำลังสร้างระบบอัตโนมัติหรือไม่? ดู คู่มือ Event Flow เพื่อเรียนรู้การใช้ข้อมูลอีเวนต์เหล่านี้ในตัวเรียก การแจ้งเตือน และขั้นตอนงานกำหนดเอง คู่มือมี เอกสารอ้างอิงตัวแปรเทมเพลต สำหรับจัดรูปแบบข้อความ
รูปแบบข้อมูล: แถวแชตแบบบริจาคควรใช้ hasDonation และตัวเลือกเพิ่มเติม donoValue อย่าตั้ง event: "donation" เพียงเพราะแถวแชต/ทิปปกติมีมูลค่า ใช้ชื่ออีเวนต์เฉพาะสำหรับการกระทำแพลตฟอร์มจริงหรือประเภทสินค้าแบบชำระเงินเท่านั้น เช่น superchat, supersticker, gift, หรือ jeweldonation ใช้ meta เฉพาะข้อมูลมีโครงสร้างเพิ่มเติมที่ผู้รับต้องใช้จริง และไม่มีช่องเดิมรองรับอยู่แล้ว

ฟีเจอร์ที่ใช้ได้โดยย่อ

ใช้ตารางนี้ดูประเภทแจ้งเตือนที่แต่ละวิธีจับข้อมูลส่งได้ในปัจจุบัน หมายเหตุข้อมูลแบบละเอียดอยู่ด้านล่าง

Multi-Stream Alert Box โดยเฉพาะจัดกลุ่มอีเวนต์สดเป็นหมวดแจ้งเตือนหลักหกหมวด: Follow, Subscription/Member, Donation, Bits/Cheers, Raid/Host, และ Purchase, พร้อมสองหมวดหมู่ที่เลือกเปิดใช้ได้ (Auction และ Hype Train) ที่เปิดผ่านพารามิเตอร์ URL โดยสร้างหมวดหมู่เหล่านั้นจากค่าที่มีอยู่ event, membership, subtitle, hasDonation, และ meta ช่องข้อมูลที่อธิบายที่นี่ ไม่ต้องมีรูปแบบข้อมูลแยก

แหล่งข้อมูล ผู้สมัครสมาชิก / สมาชิกใหม่ ผู้ติดตามใหม่ การบริจาค จำนวนและข้อมูลเพิ่มเติม
YouTube (สะพานเชื่อม Data API) การเข้าร่วมสมาชิก ต่ออายุ และของขวัญ การแจ้งเตือนสมาชิกแต่ละคน* + ยอดรวม Super Chats และ Super Stickers ยอดผู้ชม สมาชิก และยอดวิว (ตรวจเป็นระยะ)
Twitch – การจับ DOM บรรทัดชุดของขวัญและประกาศผู้รับของขวัญ - ระบุบิตผ่าน hasDonation จำนวนผู้ชม การ์ดรางวัล และการ์ดไฮไลต์ชุมชน
Twitch – EventSub/Websocket สมัครสมาชิก ต่ออายุ และของขวัญทันที ติดตามทันที + ยอดผู้ติดตาม Cheers, Power-ups และการแลกแต้มช่อง ยอดผู้ชม/สมาชิก/ผู้ติดตาม สถานะสตรีม ประกาศโฆษณา
TikTok Live - การ์ดติดตาม (เมื่อ TikTok แสดง) ของขวัญที่แปลงเป็นยอดเหรียญ จำนวนผู้ชม การแจ้งเตือนเข้าร่วม และการไลก์รัว
YouNow - กิจกรรมแฟนและผู้ชม - จำนวนผู้ชมจากแผงผู้ชมสด
Favorited Studio - - - จำนวนผู้ชมจากแท็บผู้ชมสด
Whatnot - - - จำนวนผู้ชม การแจ้งเตือนเข้าร่วม เมทาดาทาประมูลสด สินค้า และภาพข้อมูลแจกของรางวัล
eBay Live - - - จำนวนผู้ชม จำนวนผู้ติดตาม ภาพข้อมูลการ์ดอีเวนต์สด เมทาดาทาประมูลส่วนท้าย (เมื่อมีให้) หัวใจรีแอ็กชัน และเมทาดาทาอีเวนต์ที่จะมาถึง
กล่องแจ้งเตือน Streamlabs สมาชิก ของขวัญ สปอนเซอร์ การติดตาม Cheer/บิต การบริจาค (พร้อมสกุลเงิน) Cheer/บิต การบริจาค (hasDonation) ขณะเปิดกล่องแจ้งเตือน ใช้ผ่านได้ด้วย sources/websocket/streamlabs.html โทเค็นซ็อกเก็ต
OBS Flow Actions - - - อีเวนต์เอาต์พุต ฉาก บัฟเฟอร์รีเพลย์ และสื่อจบของ OBS สำหรับ Event Flow เมื่อ actions.html เชื่อมต่อกับ OBS WebSocket
Kick – DOM - - - จำนวนผู้ชมพร้อมประกาศระบบรางวัล/ของขวัญพื้นฐาน ใช้สะพานเชื่อม Kick สำหรับการแจ้งเตือนที่ละเอียดขึ้น
Kick – Websocket/สะพานเชื่อม สมาชิกใหม่ ต่ออายุ และของขวัญ การแจ้งเตือนติดตาม + ยอดผู้ติดตาม อีเวนต์สนับสนุน/ทิป (ยอด + สกุลเงิน) สถานะสตรีม การแลกรางวัล และเมทาดาทาโปรไฟล์
Facebook Live - - Stars เมื่อมองเห็นใน DOM แถวแชต Stars และการตรวจจำนวนผู้ชม
Rumble – การจับ DOM - - ราคา Rant ที่มองเห็น แชต เรดขาเข้า และการตรวจจำนวนผู้ชม
Rumble – Websocket/URL ของ API สมาชิกใหม่และสมาชิกแบบของขวัญ การแจ้งเตือนติดตาม + ยอดผู้ติดตาม Rants/ทิป (ยอด + สกุลเงิน) ยอดผู้ชม ยอดสมาชิก สถานะสด และฟีดแชต
Streamplace - - - จำนวนผู้ชมพร้อมชื่อแชต สี ตรา การตอบกลับ และลิงก์
WorldsWave - - ป้ายการบริจาคเมื่อมี แชตสดที่แสดง พร้อมอัปเดตจำนวนผู้ชมที่เลือกเปิดใช้
CHZZK - - แถวบริจาคชีสที่มองเห็น แถวแชต ภาพตรา อีโมต และการตรวจจำนวนผู้ชม
BEAM - - - แถวแชตและการตรวจจำนวนผู้ชม เมื่อหน้าแชตอย่างเดียวแสดงตัวนับผู้ชม
Seal Team Sloth - - - แถวแชตป๊อปเอาต์ที่แสดง พร้อม viewer_update ตรวจเมื่อเปิดจำนวนผู้ชม
Castyr - - - แถวแชตป๊อปเอาต์ที่แสดง พร้อมอัปเดตจำนวนผู้ชมที่เลือกเปิดใช้
RPLAY - - - เข้าสู่ระบบแล้ว /live/chat/box/ ป๊อปเอาต์: type: "rplay" แชต อวาตาร์ ภาพตราระดับ และอีโมต ทิปเหรียญคงยอด/หน่วยไว้ใน hasDonation สำหรับการแปลง USD ร่วม โดยไม่มีอีเวนต์บริจาค ตัวเลือกที่เปิดใช้ได้ viewer_update การตรวจใช้จำนวนเต็ม meta จาก endpoint สตรีมสาธารณะของ RPLAY ไม่รวมแถว Twitch ที่ส่งต่อมา
FLEX TV - - - แถวแชตที่แสดงพร้อมชื่อ สีผู้เขียน ภาพตรา และเมทาดาทาสมาชิก

*การแจ้งเตือนผู้ติดตาม YouTube ตรวจเป็นระยะและอาจล่าช้าหรือไม่ครบ เอกสารอ้างอิง API ไม่ได้รับประกันกรอบเวลาส่งสี่ชั่วโมงตายตัว ดู ข้อจำกัด API การติดตามอย่างเป็นทางการ.

ภาพรวมช่องข้อมูล

data ในที่นี้หมายถึงออบเจ็กต์ข้อความ ไม่ใช่ชั้นหุ้มเพิ่มเติมที่ต้องใส่ แถวแชตและอีเวนต์ที่มีเฉพาะเมทาดาทามีรูปแบบต่างกัน ตัวนับและภาพข้อมูลสถานะอาจไม่ใส่ chatname/chatmessage ในตารางแพลตฟอร์ม ข้อความ อธิบายแถวแชตปกติ ไม่ใช่ค่าตามตัวอักษร event: "message".

ช่องข้อมูล รูปแบบ การใช้งาน
data.type สตริง ตัวระบุแหล่งข้อมูลที่โอเวอร์เลย์ ตัวกรอง และ Event Flow ใช้ Instagram คงแชตสดเป็น instagramlive และความคิดเห็นที่ไม่ใช่แชตสดเป็น instagram ดู คู่มือประเภทแหล่งข้อมูล สำหรับรูปแบบย่อย แหล่งทั่วไป และการกำหนดเส้นทางขาออก
data.chatname สตริง ชื่อแสดงที่แหล่งข้อมูลให้มา ใช้ในการประมวลผลข้อความและเอาต์พุตที่ไม่ใช่โอเวอร์เลย์ นามแฝงชื่อแสดงผู้ใช้ที่ตั้งไว้อาจแทนค่านี้เฉพาะในสำเนาข้อมูลส่งไปแผงด็อกและโอเวอร์เลย์
data.username สตริง ชื่อผู้ใช้ต้นทางเมื่อมี ข้อมูลแผงด็อกหรือโอเวอร์เลย์ที่ใช้นามแฝงอาจเพิ่มช่องนี้เพื่อคงค่าต้นฉบับ chatname สำหรับการกระทำกับผู้ใช้ ข้อความมาตรฐานยังคงเดิม
data.userid สตริง รหัสผู้ใช้เฉพาะแพลตฟอร์ม การกระทำกับผู้ใช้ใช้ค่านี้ก่อน username และ chatname.
data.platformสตริง (ไม่บังคับ)การเชื่อมต่อบางตัวรวมค่านี้ร่วมกับ type อะแดปเตอร์แหล่งข้อมูลหลายตัวไม่ใส่ค่านี้ ใช้ type สำหรับกำหนดเส้นทางแหล่งข้อมูล
data.idสตริง | ตัวเลข (ไม่บังคับ)รหัสข้อความหรืออีเวนต์ ความหมายขึ้นอยู่กับแหล่งข้อมูลและช่องทางรับส่ง อย่าถือว่าเป็นรหัสดูแลแชตดั้งเดิมของแพลตฟอร์มเสมอ ใช้ meta.messageId เมื่ออะแดปเตอร์ให้สำหรับซิงก์การลบ
data.donoValueตัวเลข (ไม่บังคับ)ค่าเทียบเท่า USD แบบตัวเลขที่แหล่งข้อมูลให้มา รวมค่าประมาณ ค่าที่ถูกต้อง (รวมศูนย์) ใช้แทนการแปลง currency.js หากไม่มี ผู้ใช้ข้อมูลประเมิน USD จาก hasDonation และบริบทแหล่งข้อมูล ยอดและหน่วยต้นฉบับคงอยู่ใน hasDonation และเมทาดาทาผู้ให้บริการเดิม
data.chatbadgesอาร์เรย์ | สตริง (ไม่บังคับ)URL ภาพตราหรือออบเจ็กต์ตรา (type: "img" พร้อม src, type: "svg" พร้อม html, หรือ type: "text" พร้อม text) รีเลย์เก็บข้อความบนตราไว้ตามเดิมในช่องเพิ่มเติม rawText และสร้างค่าที่ escape แล้ว text สำหรับโอเวอร์เลย์เก่า ในการส่งต่อรอบหลังให้สร้างใหม่สำหรับ text จาก rawText; อย่า escape text อีกครั้ง ตัวแสดงผลปัจจุบันแสดง rawText ตามตัวอักษรเมื่อมี และคงการจัดการข้อความเข้ารหัสแบบเดิมเมื่อไม่มี นี่คือช่องรูปแบบการแทนค่า ไม่ใช่สิทธิ์แสดง HTML แหล่งเก่าอาจส่งสตริง HTML เดียวแทนอาร์เรย์ โอเวอร์เลย์แสดงตรารับทั้งสองรูปแบบและทำ HTML ตรากับ URL ให้ปลอดภัยในเครื่อง รวมกรณีผู้ส่งเป็นส่วนขยายเก่า ตราที่ไม่ถูกต้องต้องไม่ขัดขวางการแสดงข้อความแชตหรือสมาชิก
data.event สตริง | บูลีน ตัวระบุกิจกรรมระบบ (เช่น viewer_update, subscription_gift, giftpurchase) แชตปกติควรเว้นว่าง/false เพื่อให้โอเวอร์เลย์แยกประกาศระบบจากข้อความสนทนาได้
data.chatmessage สตริง เนื้อหาข้อความ มี HTML ที่ปลอดภัย/แสดงผลได้เฉพาะเมื่อ data.textonly เป็น false
data.textonly บูลีน มีผลเฉพาะ data.chatmessage. true หมายถึงแสดง chatmessage เป็นข้อความธรรมดา โดยคงแท็กตามตัวอักษรและข้อความที่ดูเหมือน entity อย่าถอดรหัส ทำ HTML sanitization หรือเพิ่มแท็กจัดรูปแบบในเนื้อหานั้น ให้ตกแต่งอีเวนต์บนองค์ประกอบที่แสดง false หมายถึง chatmessage อาจมี HTML ที่ปลอดภัย/แสดงผลได้ ข้อความเก่าที่ไม่มีแฟล็กยังคงพฤติกรรม HTML นั้น ช่องปกติอื่นเป็นข้อความธรรมดา ยกเว้นช่องสื่อ เช่น chatimg และ contentimg แสดงช่องข้อความธรรมดาด้วย textContent, หรือ escape หนึ่งครั้งเมื่อสร้างเทมเพลต HTML อย่าลบเนื้อหาหรือถอดรหัสซ้ำ ๆ
data.contentimg สตริง (ไม่บังคับ) ภาพเนื้อหาหรือ URL สื่อที่รองรับ ในส่วนขยายและแอปเดสก์ท็อป ตัวเลือกที่เปิดใช้ได้ allowExternalGifs การตั้งค่าเติมช่องว่างด้วยลิงก์ GIF โดยตรงแบบ HTTP(S) แรกในข้อความหรือในลิงก์ HTML เส้นทาง URL ต้องลงท้ายด้วย .gif (ไม่แยกตัวพิมพ์ใหญ่เล็ก); คงพารามิเตอร์คำค้นและแฟรกเมนต์ไว้ ไม่ต้องใช้คีย์ API และคง chatmessage และไฟล์แนบเดิม และเคารพ removeContentImage ตัวเลือกเพิ่มเติม hideExternalGifUrl การตั้งค่าเพิ่ม meta.hideExternalGifUrl: true; แผงด็อกและโอเวอร์เลย์ Featured จะซ่อนลิงก์ GIF ที่ตรงกันหลังภาพโหลดสำเร็จเท่านั้น โดยคงข้อความรอบข้างและข้อมูลต้นฉบับไว้ ภาพที่โหลดไม่สำเร็จหรือหมดเวลาจะยุบพื้นที่ไฟล์แนบและคงลิงก์ให้เห็น โอเวอร์เลย์เฉพาะ GIF ลองแสดงภาพโดยตรงหากดึงข้อมูลไบต์ภาพไม่ได้ และใช้เวลาแสดงที่ตั้งไว้เมื่อหาเวลาภาพเคลื่อนไหวไม่ได้ หากโหลดล้มเหลวหรือค้างจะเลื่อนคิวต่อ ไม่เพิ่ม event หรือเปลี่ยนแหล่งข้อมูล type ภาพภายนอกไม่ผ่านการกรองเนื้อหาและอาจโหลดไม่ได้หากโฮสต์บล็อกการฝัง
data.membership สตริง สถานะสมาชิกที่อ่านได้ เช่น MEMBERSHIP, new_sponsor, gift_recipient หน้าต่าง ๆ ใช้ค่านี้สำหรับตรา ตัวกรอง และประกาศ
data.subtitle สตริง คำอธิบายเสริม (ระยะเวลาสมาชิก การอัปเกรดระดับ ผู้มอบของขวัญ...) ให้สั้นและเป็นข้อความอย่างเดียว เพื่อให้โอเวอร์เลย์วางใต้ชื่อแสดงได้
data.hasDonation สตริง ยอดเงินหรือของขวัญเสมือน ($5.00, 500 bits, 300 coins) เติมค่าแม้เมื่อ data.event ว่างเพื่อให้โอเวอร์เลย์บริจาคตรวจพบ
data.meta ตัวเลข | ออบเจ็กต์ | สตริง (แบบเดิม) ใช้จำนวนเต็มสำหรับตัวนับเดี่ยว (ผู้ชม ผู้ติดตาม สมาชิก) และออบเจ็กต์สำหรับบริบทที่ละเอียดกว่า อีเวนต์เก่าบางตัว เช่น Twitch DOM community_highlight, มีค่าสตริง ตรวจรูปแบบของอีเวนต์นั้นก่อนอ่านคุณสมบัติออบเจ็กต์ รายละเอียดแบบมีโครงสร้างใหม่ควรอยู่ในออบเจ็กต์
data.firsttime บูลีน ตั้งเป็น true เมื่อเปิดการตรวจผู้แชตครั้งแรก เปิดฐานข้อมูลในเครื่อง และนี่เป็นข้อความแชตแรกที่บันทึกสำหรับผู้ใช้/แหล่งนั้น แผงด็อกใช้เพื่อไฮไลต์ครั้งแรกและตัวกรองเสียงเตือนครั้งแรก การตั้งค่าตราครั้งแรกที่เลือกใช้ได้จะเติมตราใบไม้หน้าค่า chatbadges.
data.lastactivity ตัวเลข เวลา Unix หน่วยวินาทีของกิจกรรมแชตก่อนหน้าที่บันทึกไว้สำหรับผู้ใช้นั้น เมื่อเปิดการตรวจผู้แชตครั้งแรกและฐานข้อมูลในเครื่อง ไม่ใส่สำหรับผู้ใช้ใหม่เอี่ยม

ช่องทางรับส่งการควบคุมโอเวอร์เลย์แยกจากแชต/อีเวนต์ที่จับ ตัวรับที่อัปเดตใช้ ssnControl ซองข้อมูลที่มีค่าการส่ง id, ฟีเจอร์ target, ช่องตอบกลับและรหัสไคลเอนต์ภาพข้อมูลหากระบุ เนื้อหาฟีเจอร์เดิมยังคงครบถ้วน การควบคุมฟีเจอร์สาธารณะใช้ช่อง 7 ส่วน Actions คงใช้ช่อง 6 สถานะ Poll และ Map มีค่าผู้ดำเนินรายการ epoch, revision และ reset ตัวระบุ; Timer, Ticker และ Spotify ใช้ ssnState พร้อม epoch และ revision ตัวระบุเหล่านี้อธิบายสถานะผู้ดำเนินรายการ ไม่ใช่ประวัติโหวต/แชตที่กู้คืน แหล่งข้อมูลต้องไม่เพิ่มช่องซองควบคุมในข้อความที่จับ การตอบรับไม่ได้ยืนยันการกระทำเสร็จหรือการมองเห็นใน OBS ดู สถานะการย้ายระบบ สำหรับฟีเจอร์ที่รองรับ การตกลงรูปแบบตอบกลับ และขีดจำกัดเชื่อมต่อใหม่

Phrase Guess ใช้ค่าดั้งเดิม {response: text} คำขอสำหรับคำตอบแชต server2 และ {action: "phraseGuessResponse", value: {type: "bot", chatname: name, chatmessage: text}} สำหรับประกาศเฉพาะแผงด็อก ผู้ดำเนินรายการต้องเปิดข้อความ server3 ขาเข้า การปิดควบคุมผู้ดำเนินรายการยังบล็อกคำขอเหล่านี้ ประกาศแผงด็อกส่งต่อเป็นแถวแชตบอตปกติพร้อม textonly: true, โดยไม่ส่งไปยังช่องป้อนแชตของแหล่งจับข้อมูล โหมด API เดิมคงรูปแบบคำสั่งเดิม

แนวทางใช้ Meta

เพื่อให้แดชบอร์ดและระบบอัตโนมัติสอดคล้องกัน ให้ทำตามแนวทางเหล่านี้เมื่อขยาย data.meta:

  • viewer_update, follower_update, subscriber_update, และ likes_update ใช้จำนวนเต็มธรรมดา meta ค่า likes_update เป็นยอดรวมแพลตฟอร์มจากแหล่งที่เชื่อถือได้ ผู้ใช้ข้อมูลต้องตั้งค่าที่แสดงแทนการบวกเพิ่ม สคริปต์เบื้องหลังรวมจำนวนผู้ชมไว้ใน viewer_updates พร้อมออบเจ็กต์ที่มีคีย์ตาม data.type.
  • giveaway_state เป็นภาพข้อมูลที่มีเฉพาะเมทาดาทาซึ่งผู้ดำเนินรายการสร้างสำหรับหน้าที่จัดการ meta.giveaway เวอร์ชัน 2 รวม giveawayId, ค่าที่เก็บถาวร roundId/epoch, เพิ่มค่า generation ข้ามรอบใหม่, revision ภายในรอบ, status, open, draw, keyword, count, ticketCount, ค่าที่ตรึงไว้ config, ตัวอย่างสูงสุด 120 รายการของ entrants, และ 20 รายการล่าสุดของ winners รายการให้ค่า id, name, platform และ tickets; ผู้ชนะเพิ่ม drawnAt และค่าที่มอบให้ points Coin Flip Pot เพิ่ม outcome; Number Hunt เพิ่ม number พร้อมค่าสาธารณะ low, high และค่าล่าสุด guesses, ไม่ส่งข้อมูลลับ ผู้ใช้ข้อมูลกรองตามรหัสแจกของรางวัลและทิ้งรุ่น/ฉบับแก้ไขเก่ากว่า สิ่งเหล่านี้เป็นตัวอย่างสำหรับแสดงผล ไม่ใช่รายการตั๋วทั้งหมดหรือคำสั่งจ่ายเงิน คีย์กระเป๋าเงิน ยอดคงเหลือ และรายการจองไม่อยู่ในภาพข้อมูลผู้ชม ผู้ดำเนินรายการเผยแพร่ไปยัง giveaway ป้ายกำกับ P2P และฟีด WebSocket โอเวอร์เลย์ที่เปิดไว้ ไม่ได้บอกว่า OBS มองเห็นอยู่ คู่มือ.
  • meta.giveawayControlResult มีผลของการกระทำแจกของรางวัล Event Flow (ok, ตัวเลือกเพิ่มเติม error, giveaway หรือ simulated). meta.giveawayHandled แสดงรหัสแจกของรางวัลที่การกระทำโฟลว์เข้าร่วม/ซื้อจัดการแล้ว เพื่อไม่ให้คำสั่งแชตอัตโนมัติเรียกเก็บซ้ำ ตัวแก้ไขเพิ่ม meta.economyTest สำหรับการกระทำแจกของรางวัลจำลอง ไม่ใช่อีเวนต์แพลตฟอร์มต้นทางหรือข้อมูลรับรองการอนุญาต
  • video_stats ใช้ค่าแบบมีโครงสร้าง meta ออบเจ็กต์สำหรับสถานะความพร้อมของตัวเข้ารหัส/เซิร์ฟเวอร์ภายนอก รวม provider, label, online, bitrateKbps, rttMs, bufferMs, ตัวนับแพ็กเก็ตสูญหาย/ถูกทิ้ง และรายละเอียด codec หากมี
  • อีเวนต์แบบบริจาคอาจมีออบเจ็กต์อธิบาย เช่น { amount, currency, supporter } สำหรับ Kick, { bits } สำหรับ Twitch cheers อีเวนต์สมาชิกมีเมทาดาทาเฉพาะแหล่งของตัวเอง ไม่ถือเป็นการบริจาคเงินโดยอัตโนมัติ
  • ข้อความ webhook ของ Stripe, Ko-fi, Buy Me a Coffee และ Fourthwall ที่ปรับรูปแบบแล้วมีค่าที่จำกัดขอบเขตตามผู้ให้บริการ meta.webhookId, คัดลอกจากรหัสอีเวนต์ที่คงที่ของผู้ให้บริการ เพื่อให้หน้าปลายทางตัดรายการซ้ำจากการลองใหม่และการรับส่งหลายช่องทางได้
  • เรด Twitch ส่ง { fromId, fromLogin, viewers } แหล่งอื่นต่างกัน: Whatnot ใช้ meta.numRaiders, ส่วน SharePlay ใช้ช่องเพิ่มเติม meta.fromLogin/meta.viewers ตรวจแถวเฉพาะแหล่งข้อมูลก่อนอ่านเมทาดาทาเรด
  • การแลกรางวัล Twitch EventSub ให้ค่า meta.rewardId, cost, rewardTitle, redemptionId, และรูปแบบเดิม alias ควบคู่กับข้อความที่เตรียมไว้ การ์ดรางวัล DOM และแหล่งอื่นอาจให้ช่องน้อยกว่าหรือต่างกัน
  • user_banned มีเฉพาะเมทาดาทาสำหรับวิดเจ็ตดูแลแชต โดยตั้งใจไม่รวม chatname และ chatmessage; ใช้ meta.username, meta.displayName, meta.avatarUrl, และ meta.profileUrl.
  • ช่องทางรับส่งแชตที่รองรับการซิงก์ลบผ่านการควบคุมแหล่งข้อมูลควรให้รหัสแชตดั้งเดิมของแพลตฟอร์มเป็น meta.messageId แทนการพึ่งค่าภายในแผงด็อก data-mid ค่า
  • การลบจากแหล่งข้อมูลใช้ {delete: {type, id}} สำหรับรหัสข้อความแผงด็อกที่ทราบ หรือ {delete: {type, meta: {messageId}}} สำหรับรหัสข้อความดั้งเดิมของแพลตฟอร์ม รหัสที่ทราบจะนำออกเฉพาะข้อความที่ตรงกัน เมื่อทราบเพียงผู้ใช้เป้าหมาย ให้ส่ง {delete: {type, userid}} หรือ {delete: {type, chatname}} เพื่อนำข้อความของผู้ใช้นั้นออกจากแพลตฟอร์มนั้น อย่าใช้ตัวตนผู้ดูแลแทนผู้ใช้เป้าหมาย การลบขาเข้าไม่ต้องเปิดการตั้งค่าซิงก์ดูแลแชตจากแผงด็อกไปแพลตฟอร์มที่เป็นตัวเลือกเพิ่มเติม
  • เมทาดาทาตัวตนแหล่ง SSApp อาจเพิ่ม meta.ssnAccountRole, meta.ssnSourceId, และ meta.ssnSession เมื่อกำหนดบทบาทบัญชีที่ไม่ใช่ปกติให้แหล่งข้อมูล
  • Event Flow ขอไฮไลต์ได้โดยตั้ง meta.featured = true บนข้อมูลแชต ซึ่งนำข้อความมาแสดงเด่นอัตโนมัติในแผงด็อก/โอเวอร์เลย์ Featured
  • AI Event Overlay: แอ็กชัน showAiEventOverlay ส่งสำเนาข้อความที่เรียกใช้ไปยังป้ายกำกับ aievent-CONFIGURATION_ID พร้อมเพิ่ม meta.aiEventOverlay: {profile: "CONFIGURATION_ID"} โดยคงฟิลด์ข้อความเดิมและเมทาดาทาที่เป็นออบเจ็กต์ไว้ ส่วนเมทาดาทาที่เป็นค่าสเกลาร์จะเก็บไว้ใน meta.value นี่คือการส่งไปยังปลายทางที่ระบุ ไม่ใช่เหตุการณ์ใหม่ของแพลตฟอร์ม ข้อความต้นฉบับจะไม่ถูกแก้ไข ดู คู่มือตั้งค่า.
  • ไม่บังคับ meta.aiEventOverlay.variation เลือกวลีที่ตรงกับวลีที่อนุมัติไว้ในการตั้งค่าโอเวอร์เลย์ที่บันทึกไว้ทุกตัวอักษร ข้อความของผู้ชมและข้อมูลเมตาจะถูกใส่ลงในช่องของเทมเพลตหลังจากสร้างเสร็จแล้ว
  • คำขอแสดงผล AI Event Overlay ต้องมีโปรไฟล์และโทเค็นแสดงผลส่วนตัวของโปรไฟล์นั้น การตั้งค่าและคีย์ API จัดการได้ผ่านป๊อปอัป SSN ในเครื่องเท่านั้น รูปแบบการตอบกลับคือ {aiEventResponse: {target, value}} หรือ {aiEventResponse: {target, error}}. ผลลัพธ์ที่สร้างขึ้นประกอบด้วย template, duration, warnings, และ URL ข้อมูลสื่อที่ไม่บังคับใน image/audio.
  • รางวัลโอเวอร์เลย์ AI ที่ชำระด้วยคะแนนใช้ aiEventPresentation (id, profile, expiresAt, result, message) และยืนยันการรับด้วย aiEventDelivered (รหัสการส่ง) บันทึกการหักคะแนนและจำนวนคะแนนที่ต้องคืนจะอยู่ที่โฮสต์
  • Event Flow ขอปักหมุดในแผงด็อกได้โดยตั้ง meta.pinned = true; ตัวเลือกเพิ่มเติม meta.pinnedTarget จำกัดการปักหมุดนั้นให้แผงด็อกที่มีค่าตรงกันของ label.
  • การพิมพ์เทอร์มอลใน Event Flow บันทึกผลไว้ใน meta.thermalPrintResult (success และตัวเลือกเพิ่มเติม code/error), โดยคงอีเวนต์แชตและเมทาดาทาอื่นไว้ สำหรับอีเวนต์ที่มีเมทาดาทาเป็นตัวเลขหรือค่าอื่นที่ไม่ใช่ออบเจ็กต์ ข้อมูลวินิจฉัยจะอยู่ในผลการกระทำ และอีเวนต์ไม่เปลี่ยน
  • รางวัลสติกเกอร์ SSN ที่เลือกเปิดใช้: event: "sticker" ส่งเฉพาะไปยัง stickers ป้ายกำกับโอเวอร์เลย์หลังหักแต้มสะสม โดยตั้ง platform และ type ไปยังค่าของข้อความต้นทาง type, และคง chatname, โดยเว้นว่าง chatmessage, textonly: true, และ contentimg ที่มีเส้นทางภาพสัมพัทธ์ในแพ็กเกจ หรือ URL สื่อ HTTPS ที่ผู้ดำเนินรายการอนุมัติ meta.sticker มี id, pack, name, cost, duration (วินาที), motion, redemptionId, และ expiresAt (มิลลิวินาที Unix) นี่คือรางวัล SSN ไม่ใช่การบริจาคของแพลตฟอร์มหรืออีเวนต์แต้มช่องดั้งเดิม ดู แกลเลอรีและคู่มือตั้งค่า.
  • ตัวเล่นสติกเกอร์คืนแพ็กเก็ตควบคุม {action: "stickerReceipt", meta: {sticker: {redemptionId, success}}} ไปยังผู้ส่งเมื่อภาพโหลดสำเร็จหรือล้มเหลว รับเฉพาะใบตอบรับจากตัวที่เชื่อมต่อ stickers เพียร์แก้สถานะการแลกรางวัลที่รออยู่ การส่งล้มเหลวหรือยังยืนยันไม่ได้จะเรียกคืนเงิน แพ็กเก็ตควบคุมนี้ไม่ใช่อีเวนต์แชต แนะนำให้มีจอสติกเกอร์ที่ทำงานหนึ่งจอต่อเซสชัน
  • คำสั่งโอเวอร์เลย์เวที AI ใช้ { action: "aiOverlay", target, meta } หรือการเล่นผู้ช่วยดำเนินรายการที่แผงด็อกควบคุมใช้ { action: "cohostOverlay", target, meta }; เก็บรายละเอียดคำสั่งทั้งหมด เช่น command, text, emotion, avatar, และ tts ภายใน meta.
  • หากแพลตฟอร์มให้ตัวนับหลายตัวพร้อมกัน ควรใช้ออบเจ็กต์มีโครงสร้างพร้อมคีย์ชัดเจน (meta.viewer_count, meta.follower_count) แทนการยัดหลายความหมายไว้ในสตริง
  • โอเวอร์เลย์การค้าควรใช้ออบเจ็กต์ภาพข้อมูลใน meta (ตัวอย่างเช่น auction_update และ commerce_update) และหลีกเลี่ยงช่องข้อมูลระดับบนสุดที่เพิ่มเองโดยไม่มีมาตรฐาน

การรองรับแพลตฟอร์ม

YouTube – การจับ DOM มาตรฐาน

การใช้งานในโค้ด: sources/youtube.js

  • เปิดแท็บแชตสดทิ้งไว้ ระบบอ่านการ์ดสมาชิกและของขวัญที่แสดงในเซสชันนั้น ไม่ต้องให้ผู้ชมเป็นเจ้าของช่องหรือผู้ดูแล สิทธิ์บัญชีและมุมมองแชตที่เลือกอาจมีผลต่อแถวที่มองเห็น
  • เมื่อเปิดโอเวอร์เลย์จำนวนผู้ชมและกิจกรรมแชตโดยแสดงผู้ชม ระบบจะขอจำนวนผู้ชมโดยอัตโนมัติ การตั้งค่า แสดงจำนวนผู้ชม และ ติดตามผู้ที่กำลังร่วมแชต จะเปิดการเก็บข้อมูลด้วยเช่นกัน
  • สำหรับการแจ้งเตือนผู้ติดตามและอีเวนต์เพิ่มเติม, เปิดโหมด WebSocket ในการตั้งค่าส่วนขยาย
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
sponsorship หัวข้อต้อนรับสมาชิกที่ไม่มีข้อความแชตชัดเจน (สมาชิกใหม่ ชุดของขวัญที่มาถึง) รวมการ์ดต้อนรับมีโครงสร้างหรือข้อความ “Welcome to …” ที่แปลเป็นภาษาต่าง ๆ membership เติมด้วยคำแปล “MEMBERSHIP”; subtitle มี streak/tier เมื่อตรวจพบ; nameColor ใช้สีเขียวสมาชิกเมื่ออนุญาต
giftpurchase แบนเนอร์ซื้อชุดของขวัญ (ytd-sponsorships-live-chat-gift-purchase). membership กลายเป็น gift_giver; subtitle มีจำนวนของขวัญเมื่อทราบ ไม่มี hasDonation หรือ donoValue.
giftredemption ประกาศแลกของขวัญสำหรับผู้รับ membership กลายเป็น “MEMBERSHIP”; subtitle รวม “Gifted by …”
resub แบนเนอร์อัปเกรดที่มี “upgraded to …” subtitle เก็บป้ายระดับใหม่; membership คงเป็น “MEMBERSHIP”
superchat, supersticker, jeweldonation Super Chats, Super Stickers, การ์ดประกาศบริจาค และ YouTube Gifts ที่ใช้ Jewels (yt-gift-message-view-model). hasDonation มีค่า; event ระบุประเภทสินค้าแบบชำระเงินของ YouTube โดย YouTube Gifts ใช้ N Jewels เมื่อมี หรือ 1 YouTube Gift เมื่อ YouTube ซ่อนจำนวน ภาพของขวัญใช้ contentimg, ป้ายของขวัญใช้ subtitle, และรายละเอียดของขวัญขั้นต่ำถูกทำสำเนาไว้ใน meta.youtubeGift.
jeweldonation เอฟเฟกต์ของขวัญ YouTube แสดงของขวัญ Jewel แบบเคลื่อนไหวเหนือแชตสด (ytls-gift-overlay-item-view-model). ส่งตรงไปยังเป้าหมาย GIF/สื่อโดยเฉพาะ เพื่อเล่นภาพเคลื่อนไหวโดยไม่ซ้ำกับแถวของขวัญปกติ contentimg มีไฟล์ภาพเคลื่อนไหวและ meta.youtubeGift.animationUrl/animationDescription คงรายละเอียดเอฟเฟกต์
reaction รีแอ็กชันผู้ชมปรากฏในน้ำพุอีโมจิสดของ YouTube ส่งตรงไปยังเป้าหมายรีแอ็กชันโดยเฉพาะ เก็บอีโมจินิรนามและ URL ภาพไว้ใน chatmessage/contentimg และภายใต้ meta.reactionType/reactionImage รูปแบบสดที่ทราบ ได้แก่ ❤, 😄, 🎉, 😳 และ 💯
thankyou ข้อความสำรองเมื่อมียอดบริจาคแต่ไม่มีข้อความแชต คงค่า hasDonation และแทรก “ขอบคุณสำหรับการบริจาค!” ให้อัตโนมัติสำหรับโอเวอร์เลย์
redirect แบนเนอร์เปลี่ยนเส้นทาง YouTube ปรากฏในแชตสด (ใกล้เคียงประกาศเรดที่สุด) จับเฉพาะ DOM จาก yt-live-chat-banner-redirect-renderer ตั้งค่า event เป็น redirect และใช้ membership เป็นป้ายกำกับเพื่อให้โอเวอร์เลย์แสดงเหมือนประกาศระบบอื่น
viewer_update ตรวจ endpoint ผู้ชมของ Social Stream ทุก 30 วินาที (กลับไปดึงจากหน้าเมื่อเกิดข้อผิดพลาดโควตา) meta เป็นจำนวนเต็มผู้ชมสด สมทบในยอดรวม viewer_updates ในสคริปต์เบื้องหลัง

บล็อกสมาชิกตั้งค่าเพิ่มด้วย membership สำหรับแชตผู้ดูแล/สมาชิก ส่วน subtitle มีจำนวนเดือนหรือชื่อระดับ sourceName/sourceImg เติมค่าเมื่อ getChannelInfo สำเร็จ ขณะนี้แชต DOM มาตรฐานรวม meta.messageId เมื่อ YouTube ให้รหัสข้อความแชตสดดั้งเดิม ซึ่งแผงด็อกใช้ซิงก์การลบ

YouTube – การจับ Websocket/Data API

การใช้งานในโค้ด: sources/websocket/youtube.html, ตัวช่วยร่วมใน shared/

  • ค่าเริ่มต้นใช้ขอบเขต OAuth youtube.readonly และ youtube.channel-memberships.creator สิทธิ์เขียนเพิ่มเติมเพิ่ม youtube.force-ssl สำหรับส่งแชต ดูแลแชต แบน และแก้รายละเอียดสตรีม Google อาจแสดงเป็นสิทธิ์จัดการ YouTube แบบกว้าง เพราะ YouTube ไม่มีขอบเขตสิทธิ์เขียนเฉพาะแชต
  • สถิติช่องทำตามสวิตช์แต่ละการตั้งค่า (showsubscount, showviewercount).
  • API ไม่ส่งภาพตรากำหนดเอง ตราสำรองใช้ไอคอนอีโมจิตามที่ระบุด้านล่าง
  • เมื่อ API รายงานอย่างชัดเจนว่า authorDetails.isChatModerator: true, ข้อมูลแชต Super Chat, Super Sticker, YouTube Gift และของขวัญสมาชิกจะรวม mod: true ไม่มีการอนุมานหรือแคชสถานะผู้ดูแลข้ามอีเวนต์
  • การแจ้งเตือนผู้ติดตามใหม่ใช้ myRecentSubscribers API (ตรวจทุก 5 นาที) หมายเหตุ: ผลอาจล่าช้าหรือไม่ครบ ระบุได้เฉพาะการติดตามที่มองเห็นแบบสาธารณะ
  • Data API ไม่ให้แบนเนอร์เปลี่ยนเส้นทาง YouTube ดังนั้น redirect ยังมีเฉพาะการจับ DOM มาตรฐาน
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
superchat รายการ Super Chat จากประวัติ Data API หรือการตรวจสตรีมเป็นระยะ hasDonation คงยอดของเว็บไซต์ (สกุลเงิน + ค่า); event คือ superchat รุ่น WebSocket เก่าใช้ event: "donation" สำหรับแถวนี้ ผู้ใช้ข้อมูลจึงยังรับค่านั้นเป็นชื่อเรียกเดิมได้
supersticker Super Stickers (ใช้ข้อความสำรองเท่านั้น API ไม่มีภาพ) hasDonation เก็บยอด; chatmessage มีข้อความคำอธิบายที่ถอดรหัสแล้ว
jeweldonation YouTube giftEvent ข้อความเมื่อผู้ชมแลก Jewels เป็น Gifts hasDonation เก็บ N Jewels, หรือ 1 YouTube Gift เมื่อ YouTube ซ่อนจำนวน; contentimg ใช้ URL ไฟล์ของขวัญเมื่อมีให้; subtitle มีป้ายของขวัญ; meta.youtubeGift มีรายละเอียดของขวัญเพิ่มเติม
sponsorship สมาชิกใหม่เข้าร่วมผ่าน newSponsorEvent. membership กลายเป็น new_sponsor หรือ new_member; meta รวม originalEventType, ระยะเวลา และข้อมูลระดับ
resub การต่ออายุหรืออัปเกรดระดับสมาชิก membership กลายเป็น renewed_member (ต่ออายุ) หรือ upgraded_member (อัปเกรด); subtitle แสดงระดับ
giftpurchase ชุดของขวัญที่ซื้อผ่าน API membership ตั้งเป็น gift_giver; subtitle ระบุจำนวน/ระดับ ไม่มี hasDonation หรือ donoValue.
giftredemption การแจ้งเตือนแลกของขวัญ membership gift_recipient; ตราเริ่มต้นเป็น 🎁; subtitle ระบุระดับสมาชิกที่มอบให้
membermilestone แชตฉลองเหตุการณ์สำคัญ (memberMonth หรือ displayMessage มีอยู่) membership member_milestone; subtitle สรุปเดือน + ระดับ; meta เก็บการจับคู่เหตุการณ์สำคัญแบบดิบ
viewer_update สถิติสตรีม (ผู้ชมพร้อมกัน) เมื่อเปิดรายงานผู้ชม meta เป็นจำนวนเต็ม สอดคล้องกับสคริปต์ DOM เพื่อให้ผู้ใช้ข้อมูลปลายทางรวมทั้งสองเส้นทางได้ แผงด็อกที่ใช้ &showviewercount ขอรวบรวมจำนวนผู้ชมเป็นเวลา 70 นาที และต่อคำขอทุกชั่วโมงโดยไม่เปลี่ยนการตั้งค่าส่วนกลางถาวร
likes_update ตรวจสถิติวิดีโออย่างเป็นทางการเมื่อ ส่งยอดรวมไลก์ของแพลตฟอร์ม เปิดอยู่ meta เป็นจำนวนเต็มยอดไลก์วิดีโอปัจจุบัน ส่งเมื่อจำนวนเปลี่ยนและส่งเป็นระยะเมื่อไม่เปลี่ยนเพื่อให้ผู้รับมีข้อมูลใหม่ ค่าระดับส่วนกลาง captureliketotals การตั้งค่าเปิดสิ่งนี้ ส่วนแบบเดิม captureyoutubelikes ยังคงเป็นชื่อเรียกแทนเพื่อความเข้ากันได้ การเปิดตัวเลือกต่อแผงด็อกในป๊อปอัป &showlikecount ตัวเลือกยังเปิดการจับข้อมูลส่วนกลางเหล่านั้นแบบถาวร ส่วนการเพิ่มพารามิเตอร์ URL ด้วยตนเองควบคุมเฉพาะการแสดงผล การปิดตัวเลือกแสดงผลไม่ปิดการรวบรวมส่วนกลาง
subscriber_update ตรวจสถิติช่อง (ผู้ติดตาม) เมื่อ showsubscount ไม่ได้ถูกปิดอย่างชัดเจน meta เป็นยอดสมาชิกทั้งหมด UI อัปเดตตัวนับแดชบอร์ด
view_update ตรวจสถิติช่อง (ยอดวิวตลอดกาล) เมื่อ showviewercount หรือโหมด hype ทำงาน meta เป็นจำนวนเต็มยอดวิว
live_chat_ended แชตสดใช้ไม่ได้สำหรับการถ่ายทอดที่ผูกไว้ meta.streamTitle เติมค่าเมื่อแคชเมทาดาทาสตรีมไว้แล้ว
user_banned userBannedEvent จาก API แชตสดหรือสตรีม gRPC อีเวนต์ที่มีเฉพาะเมทาดาทาสำหรับวิดเจ็ตดูแลแชต meta รวมชื่อผู้ใช้/ชื่อแสดง รหัสช่อง URL อวาตาร์/โปรไฟล์ ผู้ดูแล ระยะเวลาแบน/พัก และสถานะถาวร
new_follower ตรวจพบผู้ติดตามใหม่ผ่าน myRecentSubscribers API (ตรวจทุก 5 นาที) chatname เป็นชื่อช่องของผู้ติดตาม; chatmessage ว่างเว้นแต่เปิดข้อความแจ้งเตือนผู้ติดตามในหน้าแหล่ง YouTube meta รวม channelId, title, subscribedAt, และกลุ่มที่เข้ามารัว ๆ เพิ่ม grouped, count, others, และ subscribers หมายเหตุ: ผลอาจล่าช้าหรือไม่ครบ ระบุได้เฉพาะการติดตามที่มองเห็นแบบสาธารณะ

การส่งต่อแชตจาก API ใช้ meta.plainText สำหรับข้อความธรรมดาควบคู่กับข้อมูลแบบสมบูรณ์ chatmessage เนื้อหา เป็นข้อความ ไม่ใช่ HTML และยังมีอีโมจิ Unicode ได้ ตราสมาชิกใช้สำรองเป็นอีโมจิ (⭐, 💝, 🏅, ฯลฯ) เพื่อให้สอดคล้องกับการจับ DOM ข้อมูลแชตปกติยังรวม meta.messageId เพื่อให้การลบจากแผงด็อกส่งกลับไปยัง YouTube moderation API ได้

การแจ้งเตือนผู้ติดตาม YouTube (new_follower)

ขณะนี้ Social Stream ตรวจพบผู้ติดตาม YouTube ใหม่ได้ด้วย myRecentSubscribers endpoint ของ API ทำงานคล้ายการแจ้งเตือนสมาชิก Streamlabs

วิธีทำงาน:

  • ตรวจ YouTube API ทุก 5 นาทีเพื่อหาผู้ติดตามล่าสุด
  • ติดตามผู้ติดตามที่เห็นใน localStorage เพื่อตรวจหาคนใหม่
  • ส่ง new_follower อีเวนต์พร้อมชื่อ อวาตาร์ และรหัสช่องของสมาชิก
  • ปิดข้อความแจ้งเตือนผู้ติดตามเป็นค่าเริ่มต้น เมื่อเปิดจะใช้ข้อความแปลปัจจุบันสำหรับ alert-just-subscribed
  • ค่าเริ่มต้นรวมกลุ่มเมื่อมีสมาชิกใหม่มากกว่าสามคนเข้ามารัว ๆ เพื่อไม่ให้การเชื่อมต่อใหม่ทำให้โอเวอร์เลย์หรือ Event Flow เต็มไปด้วยรายการ
  • ต้องเปิดโหมด WebSocket ในการตั้งค่าส่วนขยาย

ข้อจำกัด (เป็นข้อจำกัดของ YouTube API ไม่ใช่ Social Stream):

  • ไม่รับประกันระยะเวลาส่ง – SSN ตรวจทุกห้านาที แต่ API อาจคืนผลล่าช้าหรือไม่ครบ อย่าพึ่งกรอบเวลาสี่ชั่วโมงตายตัว
  • เฉพาะการติดตามสาธารณะ – ผู้ติดตามที่ตั้งรายชื่อการติดตามเป็นส่วนตัวจะไม่เรียกการแจ้งเตือน YouTube ตั้งการติดตามเป็นส่วนตัวตามค่าเริ่มต้น
  • เฉพาะเจ้าของช่อง – คุณรับการแจ้งเตือนผู้ติดตามได้เฉพาะช่องที่เป็นเจ้าของและยืนยันตัวตนแล้ว
  • การใช้โควตา API – การตรวจแต่ละครั้งใช้ API 1 หน่วย หากตรวจทุก 5 นาที จะใช้ประมาณ 288 หน่วยต่อวัน (จากโควตาเริ่มต้น 10,000 ต่อวัน)

ตัวเรียกในตัวแก้ไข Event Flow: ใช้ data.event === "new_follower" และ data.type === "youtube"

YouTube Websocket: เอกสารอ้างอิงอีเวนต์และสมาชิกฉบับย่อ

data.event data.membership สถานการณ์
sponsorshipnew_sponsorสมาชิกใหม่ผ่าน newSponsorEvent
sponsorshipnew_memberสมาชิกใหม่ผ่าน processMembership
resubrenewed_memberการต่ออายุสมาชิก
resubupgraded_memberการอัปเกรดระดับ
giftpurchasegift_giverมอบสมาชิกเป็นของขวัญให้ช่อง
giftredemptiongift_recipientได้รับสมาชิกเป็นของขวัญ
membermilestonemember_milestoneแชตฉลองครบรอบสมาชิก
superchat-Super Chat
supersticker-Super Sticker
user_banned-อีเวนต์แบน/พักผู้ใช้ที่มีเฉพาะเมทาดาทา
new_follower-ผู้ติดตามใหม่ (ตรวจเป็นระยะ อาจล่าช้า)

Twitch – การจับ DOM มาตรฐาน

การใช้งานในโค้ด: sources/twitch.js

  • เปิดแชต Twitch ทิ้งไว้ จับสมาชิกและประกาศผู้ใช้เมื่อ Twitch แสดง ไม่ได้จำกัดเฉพาะบัญชีเจ้าของช่องหรือผู้ดูแล ฟีเจอร์เฉพาะบัญชีอาจต้องยืนยันตัวตน
  • คำขอจำนวนผู้ชมเรียกไปยัง https://api.socialstream.ninja/twitch/viewers ทุก 30 วินาที
  • สำหรับการแจ้งเตือนผู้ติดตาม เรด และการรองรับอีเวนต์ครบถ้วน, เปิดโหมด WebSocket ในการตั้งค่าส่วนขยาย
  • ประกาศ Watch Streak ที่ผู้ชมแชร์ปิดอยู่ตามค่าเริ่มต้นและต้องใช้ แสดง Twitch Watch Streaks การตั้งค่า
  • ตัวเลือกที่เปิดใช้ได้ PluralMind การตั้งค่าอาจแทนที่ chatname, nameColor, และส่วนที่หุ้มด้วยพร็อกซีของ chatmessage, และอาจเพิ่มตราข้อความสรรพนาม username คงเป็นชื่อเข้าสู่ระบบ Twitch การลบที่เกี่ยวข้องมี delete.meta.pluralmind เพื่อให้แผงด็อกใช้ชื่อเข้าสู่ระบบที่คงที่นั้น
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
reward การ์ดแลกแต้มช่อง (รวมคอนเทนเนอร์รางวัล 7TV) chatmessage มีข้อความแลกรางวัล; membership โดยไม่เปลี่ยน
giftpurchase บรรทัดระบบ เช่น “ผู้ใช้กำลังมอบสมาชิก X คนในช่อง” chatmessage เป็นบรรทัดระบบ ทำให้โอเวอร์เลย์ไฮไลต์แคมเปญผู้ให้ของขวัญได้
subscription_gift ประกาศมอบสมาชิก (“ผู้ใช้มอบสมาชิกให้ …”) ระบุอีเวนต์สำหรับตัวกรองไฮไลต์; membership คงเป็นป้ายตราผู้รับ
viewer_update ดึงจากพร็อกซีผู้ชม Social Stream ทุก 30 วินาที (ใช้ 0 เมื่อเกิดข้อผิดพลาด) meta จำนวนเต็มของผู้ชม
hype_train ไฮไลต์ชุมชนแบบตรึงของ Twitch แสดง Hype Train ที่ใช้งานในแชตป๊อปเอาต์ ทางสำรอง DOM ที่มีเฉพาะเมทาดาทาพร้อม meta.sourceMode ตั้งเป็น dom ใช้ระดับ ตัวจับเวลา และค่าที่มองเห็น meta.progressPercent เมื่อ Twitch ไม่ให้ยอดแต้ม EventSub
community_highlight องค์ประกอบภายในวิดเจ็ต “Community Highlight” ของ Twitch meta เป็นข้อความไฮไลต์ที่ดึงสำหรับจุดเชื่อมระบบอัตโนมัติ
knock คำเชิญร่วมงาน Stream Together ที่แสดงเหนือแชต chatmessage มีข้อความคำเชิญ; chatname ได้จากผู้ใช้ในแจ้งเตือนเมื่อมี
watch_streak ประกาศ Watch Streak ที่ผู้ชมเลือกแชร์และแสดงในแชต Twitch meta.streakCount มีจำนวนที่มองเห็นเมื่อตรวจพบ; meta.milestoneId ใช้ตัวระบุประกาศ DOM เมื่อมี

บิต/Cheers เติมค่าใน hasDonation (เช่น “500 bits”) แม้ว่า data.event คงว่าง ให้อิงช่องนั้นเมื่อแสดงวิดเจ็ตบริจาค ข้อมูลช่วงสมัครต่อเนื่องปรากฏใน subtitle เมื่อตราให้จำนวนเดือน

Twitch – EventSub/Websocket

การใช้งานในโค้ด: sources/websocket/twitch.js พร้อมแกนร่วม providers/twitch/chatClient.js

  • ขอบเขต OAuth: chat:read, chat:edit, user:write:chat, bits:read, moderator:read:followers, moderator:read:chatters, channel:read:subscriptions, channel:read:hype_train, channel:moderate, moderator:manage:banned_users, moderator:manage:chat_messages, channel:manage:broadcast, channel:read:redemptions, channel:read:ads, channel:manage:ads โทเค็นเจ้าของช่องปลดล็อกจำนวนผู้สมัครสมาชิก/ผู้ติดตาม
  • อีเวนต์ส่งผ่าน EventSub พร้อมตรวจ Helix เป็นระยะสำหรับยอดผู้ชม/ผู้ติดตาม/ผู้สมัครสมาชิก
  • โหมด WebSocket ให้ข้อมูลแบบเรียลไทม์ การแจ้งเตือนผู้ติดตาม อีเวนต์สมัครสมาชิก เรด cheers, Power-ups, การแลกแต้มช่อง และเมทาดาทา hype train
  • แถว Shared Chat ใช้ Twitch IRC source-room-id เพื่อเติมค่า sourceName/sourceImg พร้อมช่องต้นทางเมื่อแตกต่างจากช่องที่เชื่อมต่อ
  • ประกาศ Watch Streak ที่ผู้ชมแชร์ปิดอยู่ตามค่าเริ่มต้นและต้องใช้ แสดง Twitch Watch Streaks การตั้งค่า
  • ตัวเลือกที่เปิดใช้ได้ PluralMind การตั้งค่าอาจแทนที่ chatname, nameColor, และส่วนที่หุ้มด้วยพร็อกซีของ chatmessage, และอาจเพิ่มตราข้อความสรรพนาม username และ userid คงตัวตน Twitch การลบที่เกี่ยวข้องมี delete.meta.pluralmind เพื่อให้แผงด็อกใช้ช่องที่คงที่เหล่านั้น
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
cheer การแจ้งเตือน Cheer จาก EventSub channel.bits.use. hasDonation “N bits”; meta.bits ตัวเลข; chatmessage คงข้อความดิบ ผู้เชียร์ที่ระบุตัวได้รวม chatimg.
powerup การแจ้งเตือน Power-up ในตัวหรือกำหนดเองจาก EventSub channel.bits.use. ข้อมูลอีเวนต์อย่างเดียวพร้อมค่าว่างใน chatmessage และไม่มี hasDonation, จึงไม่สร้างแถวแชตปกติ meta.bits เป็นตัวเลขและ meta.powerUp คงประเภทย่อย Twitch ชื่อ/รหัสรางวัล รายละเอียดเอฟเฟกต์ และข้อความที่ให้มาเมื่อมี
new_subscriber channel.subscribe หรือ USERNOTICE พร้อม msg-id=sub. meta รวม { userId, tier, isGift }; ยอดสมาชิกที่แคชไว้เพิ่มเมื่อมีข้อมูล ส่วนยอดผู้ชมตรวจเป็นระยะแยกต่างหาก
resub channel.subscription.message หรือ USERNOTICE msg-id=resub. meta มีช่วงต่อเนื่องและเดือนสะสม; chatmessage รวมข้อความสมัครสมาชิกซ้ำ
subscription_gift channel.subscription.gift หรือ USERNOTICE msg-id=subgift. meta ให้ยอดของขวัญรวมและระดับ; chatmessage สรุปการกระทำ
reward channel.channel_points_custom_reward_redemption.add. meta รวมรหัสรางวัล ชื่อ ต้นทุน พรอมป์ต์ อินพุตผู้ใช้ รหัส/สถานะการแลก และชื่อเรียกเดิม ไม่มีค่าระดับบนสุด reward ออบเจ็กต์ถูกส่งโดยตัวจัดการ EventSub นี้ ผู้ใช้ข้อมูลเก่าอาจยังแสดง channel_points เป็นชื่อเรียกแทนที่เลิกแนะนำแล้ว
raid EventSub channel.raid หรือ USERNOTICE msg-id=raid. meta = { fromId, fromLogin, viewers }.
watch_streak Twitch IRC USERNOTICE ที่เลือกเปิดใช้พร้อม msg-id=viewermilestone และ msg-param-category=watch-streak. รวมผู้ชมไว้ใน chatname, ข้อความแจ้งเตือนของ Twitch ใน chatmessage, และ meta.streakCount/meta.milestoneId USERNOTICE ทั่วไปประเภทอื่นยังถูกข้าม
new_follower channel.follow การแจ้งเตือน EventSub เพิ่มอัตโนมัติ follower_update; meta บันทึก { userId, followedAt }.
viewer_update Helix streams ตรวจทุก 30 วินาที meta จำนวนเต็มของผู้ชม ระงับเว้นแต่เปิดสถิติผู้ชมในการตั้งค่า
follower_update ยอดผู้ติดตาม Helix เรียกหลังอีเวนต์ติดตามหรือตรวจเป็นระยะ meta จำนวนเต็มของผู้ติดตาม
subscriber_update ยอดสมาชิก Helix (ต้องใช้โทเค็นเจ้าของช่องที่มีสิทธิ์ subscription) meta จำนวนเต็มของสมาชิก
stream_online / stream_offline EventSub stream.online/stream.offline. meta.startedAt มีสำหรับอีเวนต์ออนไลน์ ออฟไลน์ใช้ออบเจ็กต์ว่าง
ad_break / ad_request / ad_schedule คำตอบ API ตัวจัดการโฆษณา (channel.ad_break.begin, แบบกำหนดเอง POST channels/ads, GET channels/ads). meta ให้รายละเอียดระยะเวลา ผู้ร้องขอ และข้อมูลกำหนดการสำหรับแดชบอร์ด
hype_train EventSub channel.hype_train.begin, channel.hype_train.progress, และ channel.hype_train.end การแจ้งเตือน v2 อีเวนต์ที่มีเฉพาะเมทาดาทา: ไม่มี chatname หรือ chatmessage. meta.phase คือ begin, progress, หรือ end; meta รวมรหัสขบวน ระดับ ความคืบหน้า เป้าหมาย ยอดรวม ผู้สนับสนุน ช่องเวลา แฟล็กขบวนร่วม และ trainType แสดง Treasure train ผ่าน meta.trainType เมื่อ Twitch ระบุป้ายกำกับ
user_banned EventSub channel.ban, หรือ IRC CLEARCHAT เป็นทางสำรองเมื่ออีเวนต์แบน EventSub ใช้ไม่ได้ อีเวนต์ที่มีเฉพาะเมทาดาทาสำหรับวิดเจ็ตดูแลแชต meta รวมชื่อผู้ใช้/ชื่อแสดง รหัสผู้ใช้ URL อวาตาร์/โปรไฟล์ ผู้ดูแล เหตุผล ระยะเวลาแบน/พัก และสถานะถาวร

ข้อมูลแชตใช้ผู้ให้บริการร่วม จึง data.event เติมค่าสำหรับ `/me` (action) และรูปแบบเดิม bits แท็กแม้อยู่นอกโฟลว์ EventSub ข้อความ GIF ของ Twitch ใส่ไฟล์ Giphy ใน contentimg, คงค่า chatmessage ว่างไว้ และคงป้ายสำรองของ Twitch ใน meta.gifLabel ตรรกะตัดรายการซ้ำและลบใช้รหัสข้อความ ข้อความที่ส่งผ่าน SSN ใช้ค่าดั้งเดิม message_id จากข้อความสะท้อน IRC ของ Twitch ใน data.id.

เมทาดาทา Twitch Hype Train

hype_train มีเฉพาะเมทาดาทาและไม่รวม chatname หรือ chatmessage แดชบอร์ดควรอัปเดตการแสดงขบวนเดิมตาม meta.id แทนการเพิ่มทุกอัปเดตความคืบหน้าเป็นแชต ส่วน Meta Data Bar (meta.html) แสดงอีเวนต์เหล่านี้เป็นแถบความคืบหน้าด้านบน

ช่องข้อมูล พิมพ์ หมายเหตุ
typeสตริงเสมอ twitch.
eventสตริงเสมอ hype_train.
meta.phaseสตริงbegin, progress, หรือ end.
meta.idสตริงรหัสขบวนที่คงที่ ใช้เพิ่มหรืออัปเดตวิดเจ็ตขบวนที่มองเห็นหนึ่งรายการ
meta.broadcasterUserIdสตริงรหัสผู้ใช้เจ้าของช่อง Twitch
meta.broadcasterUserLoginสตริงชื่อเข้าสู่ระบบเจ้าของช่อง Twitch
meta.broadcasterUserNameสตริงชื่อแสดงเจ้าของช่อง Twitch
meta.totalตัวเลข | nullมูลค่าสนับสนุนรวมที่ Twitch รายงานสำหรับขบวน
meta.progressตัวเลข | nullความคืบหน้าปัจจุบันสู่เป้าหมายระดับ
meta.goalตัวเลข | nullเป้าหมายระดับปัจจุบัน
meta.progressPercentตัวเลข | nullเปอร์เซ็นต์สำรองจาก DOM เมื่อ Twitch ให้เฉพาะแถบความคืบหน้าที่มองเห็นในป๊อปเอาต์
meta.levelตัวเลข | nullระดับขบวนปัจจุบันหรือตอนจบ
meta.topContributionsอาร์เรย์ผู้สนับสนุนสูงสุด แต่ละรายการรวม userId, userLogin, userName, type, และค่าตัวเลข total.
meta.lastContributionออบเจ็กต์ | nullการสนับสนุนล่าสุด ใช้รูปแบบเดียวกับ topContributions.
meta.sharedTrainParticipantsอาร์เรย์ข้อมูลดิบผู้ร่วมขบวนร่วมจาก Twitch เมื่อมีให้
meta.startedAtสตริงเวลา ISO ที่ขบวนเริ่ม
meta.expiresAtสตริงเวลา ISO ที่ขบวนปัจจุบันหมดอายุ
meta.endedAtสตริงเวลา ISO ที่ขบวนสิ้นสุด หรือว่างก่อนจบ
meta.cooldownEndsAtสตริงเวลา ISO ที่คูลดาวน์สิ้นสุด หรือว่างก่อนจบ
meta.isSharedTrainบูลีนเป็น true เมื่อ Twitch ระบุว่าขบวนเป็นแบบร่วมกัน
meta.trainTypeสตริงโดยทั่วไป regular; แสดง Treasure train ที่นี่เมื่อ Twitch ระบุป้ายกำกับ
meta.allTimeHighLevelตัวเลข | nullระดับขบวนสูงสุดตลอดกาลเมื่อ Twitch ให้มา
meta.allTimeHighTotalตัวเลข | nullยอดรวมขบวนสูงสุดตลอดกาลเมื่อ Twitch ให้มา
meta.sourceModeสตริงตัวระบุแหล่งข้อมูลเพิ่มเติม เช่น dom.
meta.eventSubTypeสตริงประเภท EventSub ต้นฉบับ: channel.hype_train.begin, channel.hype_train.progress, channel.hype_train.end, หรือ dom.community_highlight.

Twitch EventSub: เอกสารอ้างอิงอีเวนต์ฉบับย่อ

data.event สถานการณ์
new_followerผู้ใช้ติดตามช่อง
new_subscriberการสมัครสมาชิกใหม่
resubสมัครสมาชิกซ้ำพร้อมข้อความ
subscription_giftมอบการสมัครสมาชิกเป็นของขวัญให้ช่อง
cheerเชียร์ด้วยบิต
powerupใช้ Power-up ในตัวหรือกำหนดเอง
rewardการแลกแต้มช่อง
raidเรดขาเข้า
viewer_updateจำนวนผู้ชมพร้อมกัน
follower_updateยอดผู้ติดตามทั้งหมด
subscriber_updateยอดสมาชิกทั้งหมด
stream_onlineสตรีมเริ่มถ่ายทอดสด
stream_offlineสตรีมจบแล้ว
ad_breakช่วงโฆษณาเริ่มแล้ว
hype_trainเมทาดาทาสถานะ Hype Train/Treasure Train
user_bannedผู้ใช้ถูกแบนหรือพักชั่วคราว

OBS Flow Actions

การใช้งานในโค้ด: actions.html ผ่านอีเวนต์ OBS WebSocket v5 พร้อม dock.html อีเวนต์แหล่งเบราว์เซอร์ OBS เป็นทางสำรอง

  • เปิดโอเวอร์เลย์ Flow Actions ด้วยเซสชัน Social Stream เดียวกับตัวแก้ไข Event Flow/ระบบเบื้องหลัง หรือโหลดแผงด็อกไว้ใน OBS
  • ตั้งค่า OBS WebSocket v5 บน OBS 28+ โดย URL เริ่มต้นคือ ws://127.0.0.1:4455.
  • เป็นอีเวนต์ระบบ Event Flow ไม่รวม chatname หรือ chatmessage, และรายละเอียด OBS เพิ่มเติมอยู่ภายใน meta.
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
stream_started OBS รายงานว่าเอาต์พุตสตรีมเข้าสู่สถานะเริ่มแล้ว type คือ obs; event คือ stream_started; meta.source คือ obs-websocket หรือ obs-browser-source; meta.outputState อาจมีสถานะเอาต์พุต OBS ดิบ
stream_stopped OBS รายงานว่าเอาต์พุตสตรีมเข้าสู่สถานะหยุดแล้ว type คือ obs; event คือ stream_stopped; meta.outputActive อาจเป็น false.
recording_started OBS รายงานว่าเริ่มบันทึกแล้ว type คือ obs; meta.obsEvent ระบุแหล่งอีเวนต์ OBS
recording_stopped OBS รายงานว่าหยุดบันทึกแล้ว type คือ obs; meta.outputState อาจมีสถานะ WebSocket ดิบ
scene_changed OBS เปลี่ยนฉากโปรแกรมที่ใช้งาน type คือ obs; meta.sceneName มีชื่อฉากเมื่อ OBS ให้มา
media_ended อินพุตสื่อ OBS เล่นจบ type คือ obs; meta.inputName และ meta.inputUuid ระบุอินพุตสื่อ
replay_buffer_saved OBS บันทึกบัฟเฟอร์รีเพลย์ type คือ obs; meta.savedReplayPath อาจมีเส้นทางรีเพลย์ที่บันทึก

กล่องแจ้งเตือน Streamlabs

การใช้งานในโค้ด: sources/streamlabs.js (DOM กล่องแจ้งเตือน); สะพานเชื่อมซ็อกเก็ตเพิ่มเติมที่ sources/websocket/streamlabs.html

  • เปิดกล่องแจ้งเตือน Streamlabs ไว้ในแท็บหรือแหล่งเบราว์เซอร์ให้การแจ้งเตือนแสดง สคริปต์เนื้อหาอ่าน DOM แจ้งเตือนเพื่อรับข้อความ/ภาพ/โทเค็น
  • การแจ้งเตือนแบบบริจาคตั้งค่า hasDonation (เช่น “$10 USD” หรือ “100 bits”) และตัวเลือกเพิ่มเติม donoValue เป็น USD
  • ประเภทอีเวนต์ที่อนุมาน: follow, subscription, gift, cheer, donation, superchat, raid, redeem, merch, sponsor.
  • สำหรับสะพานเชื่อมซ็อกเก็ต ให้วางโทเค็น Streamlabs Socket API แล้วเชื่อมต่อ การแจ้งเตือนส่งต่อได้โดยไม่ต้องเปิดหน้ากล่องแจ้งเตือน
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
donation ทิป การกุศล JustGiving หรือการแจ้งเตือน “donated” ทั่วไป hasDonation คงข้อความสกุลเงิน (เช่น “$36” หรือ “$10 CAD”); donoValue ให้มาเฉพาะเมื่อมีมูลค่า USD ยอดพร้อมป้ายสกุลเงินอื่นใช้การแปลงสกุลเงินร่วม
cheer การแจ้งเตือนบิต/cheer ของ Twitch hasDonation กลายเป็น “100 bits” และ donoValue เก็บมูลค่า USD
subscription การแจ้งเตือนสมัครสมาชิก ตั้งช่องข้อมูลมาตรฐาน; chatmessage เป็นบรรทัดแจ้งเตือน; meta.tokens มีค่าที่แยกเป็นโทเค็น (name, amount, levelName ฯลฯ)
gift สมาชิก/การสมัครสมาชิกแบบของขวัญ meta.tokens.amount อาจแสดงจำนวนของขวัญ; meta.tokens.levelName เก็บระดับได้
follow การแจ้งเตือนผู้ติดตาม ไม่มีช่องบริจาค; chatname สะท้อนโทเค็นชื่อในการแจ้งเตือน
raid การแจ้งเตือนเรด meta.tokens.count เก็บจำนวนผู้ร่วมเรดเมื่อมี
redeem การแจ้งเตือนแลกรางวัล Cloudbot meta.tokens.product เก็บรายการแลกรางวัล
merch การแจ้งเตือนซื้อสินค้าแฟนคลับ meta.tokens.product มีชื่อสินค้าที่ซื้อ
superchat การแจ้งเตือนแบบ Super Chat จาก YouTube หรือระบบแจ้งเตือนที่รองรับ hasDonation มียอด ผู้ใช้ข้อมูลยังรับชื่อเดิมต่อได้ donation ชื่อเรียกแทน
sponsor การแจ้งเตือนแบบสปอนเซอร์/สมาชิกที่ Streamlabs แสดง ช่องข้อมูลมาตรฐาน ไม่มีการบริจาคเว้นแต่ข้อความมียอดเงิน

TikTok Live – การจับ DOM และฟีด TikFinity

การใช้งานในโค้ด: sources/tiktok.js สำหรับหน้า TikTok ดั้งเดิมและ sources/tikfinity.js สำหรับวิดเจ็ต/iframe ฟีดกิจกรรมของ TikFinity ส่วน SSApp ยังมีการเชื่อมต่อ TikTok ดั้งเดิมที่รองรับอีเวนต์ครอบคลุมที่สุด (ดูเอกสาร SSApp)

  • ทำงานบนหน้าถ่ายทอดสดของเจ้าของช่อง แบนเนอร์ของขวัญ/ไลก์/ติดตามแสดงข้อมูลเฉพาะเมื่อเซสชันยืนยันตัวตนแล้ว
  • TikTok ให้อีเวนต์จำนวนมากผ่านการตรวจ DOM โดยไม่ต้องใช้โหมด WebSocket – จับของขวัญ การติดตาม ไลก์ และการเข้าร่วมที่เลือกเปิดจากแถวที่แสดง
  • หน้าวิดเจ็ต TikFinity ที่ tikfinity.zerody.one/widget/activity-feed* ก็ทำงานได้เช่นกัน iframe ฟีดกิจกรรมที่ฝังส่งช่องข้อมูล TikTok มาตรฐานเดียวกันสำหรับแชต ติดตาม แชร์ ของขวัญ สมัครสมาชิก การเข้าร่วมที่เลือกเปิด และหีบสมบัติ
  • ไม่ต้องยืนยันตัวตน API เพิ่มเติม
  • โหมดดั้งเดิมของ SSApp ยังเพิ่มอีเวนต์นอกเหนือจากเส้นทางจับหน้า/วิดเจ็ต: question_new, emote, viewer_update, และค่าสรุปรวมที่เลือกเปิดใช้ likes_update.
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
gift แถวแบนเนอร์ของขวัญหรือ DivGiftMessage รายการ hasDonation แปลงเป็น “N coins” (ใช้การค้นของขวัญเป็นทางสำรอง); membership ใช้ข้อความตราเมื่อมี
joined การแจ้งเตือนเข้าร่วมเมื่อค่าระดับส่วนกลาง จับอีเวนต์สตรีม "joined" การตั้งค่าเปิดอยู่ ข้ามการแจ้งเตือนแชร์; chatname อาจว่างสำหรับสตริงระบบบางรายการ
followed ข้อความติดตามที่อ่านจากการ์ดโซเชียล ทำให้แน่ใจว่า chatname มีอยู่ก่อนส่ง
shared แถวแชร์ TikFinity chatmessage เป็นข้อความแชร์ที่แสดง
subscribe แถวสมัครสมาชิก TikFinity membership ตั้งเป็น SUBSCRIBER.
envelope แถวหีบสมบัติ TikFinity meta.coins และ meta.canOpen มีรายละเอียดหีบ
liked สรุปการกดไลก์รัวที่เรียกจากการ์ดโซเชียล TikTok chatname รวมเมื่อ TikTok ให้มา การ์ดไลก์นิรนาม/ระบบอาจยังส่งได้ TikTok ส่งผ่านเส้นทางเบื้องหลังปกติ ระบบเบื้องหลังส่งหนึ่งสำเนาไป Reactions Overlay แล้วไปต่อในเส้นทางแชต/อีเวนต์หลักเฉพาะเมื่อ capturelikeevent เปิดอยู่
likes_update SSApp ได้รับยอดสะสม TikTok LIVE จากแหล่งที่เชื่อถือได้ขณะ captureliketotals เปิดอยู่ meta เป็นจำนวนเต็มยอดรวมปัจจุบัน SSApp ส่งค่าแรกทันที รวมการเปลี่ยนรัวให้ไม่เกินหนึ่งอัปเดตทุกห้าวินาที ส่งค่าล่าสุดซ้ำประมาณทุก 90 วินาที และส่งศูนย์เมื่อสตรีมจบ แยกจากค่ารายผู้ชม liked อีเวนต์
true (บูลีน) การเผยแพร่โซเชียล/ระบบทั่วไปที่ TikTok ไม่ระบุประเภทย่อย ใช้ chatmessage เนื้อหาเพื่อตัดสินการแสดงผล; ค่าบูลีน true หมายถึง “อีเวนต์ระบบ – ไม่ทราบประเภท”

membership สะท้อนข้อความ tooltip ของตรา (ระดับสมาชิก) การแคชอวาตาร์คง chatimg ให้ใช้ได้ระหว่างอีเวนต์ หาก DOM ซ่อนสีสำหรับผู้ดูแล สคริปต์ล้าง nameColor แถวของขวัญ TikFinity ตั้งค่าด้วยว่า contentimg เป็นไอคอนของขวัญเมื่อมี การอัปเดตคอมโบของขวัญ DOM ดั้งเดิมและ TikFinity รวม meta.tiktokGiftStreakId, meta.tiktokGiftCount, และ meta.tiktokGiftQuietMs เพื่อให้โอเวอร์เลย์รวมอัปเดตซ้ำได้ รหัสคอมโบแบบเดิมไม่ซ้ำภายในอินสแตนซ์หน้า เมทาดาทาของขวัญอาจรวม tiktokGiftMessageId (รหัสข้อความ TikTok ต้นฉบับ), tiktokGiftSenderId, groupId, giftId, giftName, streakable, และ repeatEnd รหัสดั้งเดิมระบุของขวัญเดียวกันข้ามหน้าต่างจับข้อมูล รหัสกลุ่มที่ไม่เป็นศูนย์ร่วมกับรหัสผู้ส่งและของขวัญใช้ระบุการอัปเดตคอมโบสะสม การจับ SSApp WebSocket ให้ช่องเดียวกันหลังคอมโบจบ พร้อม count คงไว้เพื่อความเข้ากันได้ ตรวจสวิตช์บริจาคเมื่อส่งต่อของขวัญแต่ละรายการ การปิดบริจาค TikTok นำออก hasDonation และ donoValue โดยคงอีเวนต์ของขวัญและเมทาดาทา TTS ใช้ตัวตนเหล่านี้รวมอัปเดตและระงับรายการสำเร็จซ้ำนานสูงสุดสิบนาที (แคชจำกัดขนาด) และอ่านของขวัญ TikTok เป็นผู้ส่ง จำนวน และชื่อของขวัญ ข้อมูลเก่าใช้รหัสคอมโบและข้อความเดิมเป็นทางสำรอง ไม่อนุมานตัวตนจากข้อความของขวัญอย่างเดียว เสียงพูดของขวัญ TikTok ใช้ภาษา TTS/เสียงที่เลือกแยกจากภาษา UI กริยาประกาศมีคำแปลภาษาอังกฤษ สเปน โปรตุเกส ฝรั่งเศส เยอรมัน อิตาลี และดัตช์ ภาษาอื่นใช้ผู้ส่ง จำนวน และชื่อของขวัญโดยไม่ใส่กริยาภาษาอังกฤษ TTS แบบเรียบง่ายคงรูปแบบกลางนี้ ชื่อของขวัญคงตามที่แพลตฟอร์มให้มา ไม่ได้แปลแค็ตตาล็อกของขวัญหรือข้อความแชตอัตโนมัติ และไม่อนุมานภาษาสตรีม

สำหรับการอัปเดตคอมโบเหล่านี้ จำนวนและป้ายบริจาคเป็นค่าสะสม: 1, 2, 3 หมายถึงสามของขวัญ ไม่ใช่หก ระบบรวมยอดควรบวกเฉพาะส่วนที่เพิ่มจากค่าสูงสุดที่เห็นแล้วสำหรับรหัสคอมโบนั้น การจับมาตรฐานรองรับทั้งคลาสของขวัญเดิมและแถวภาพ/จำนวนปัจจุบัน ทั้งคู่คง event: "gift" และ hasDonation ราคาที่ไม่ทราบจะคงจำนวน/ชื่อของขวัญไว้แสดง และประเมิน USD โดยใช้หนึ่งเหรียญต่อของขวัญหนึ่งชิ้น ค่าที่แหล่งข้อมูลให้มา donoValue มีลำดับความสำคัญก่อน เมทาดาทาของขวัญที่แสดงอาจให้ coinsPerGift หรือ diamondsPerGift ก่อนต้องใช้ตารางของขวัญหรือค่าเริ่มต้น การประเมินเหรียญแบบ Standard/TikFinity และการประเมินเพชรแบบดั้งเดิมของ SSApp ใช้การแปลงแยกตามเดิม ทั้งคู่ไม่ใช่ยอดเงินสดรับที่รับประกัน

Whatnot

การใช้งานในโค้ด: sources/whatnot.js

  • เปิดหน้ารายการ Whatnot สดโดยให้แชตมองเห็น การจับ websocket ที่มีอยู่ให้แชต การแจ้งเตือนประมูล/ขาย การชำระเงินล้มเหลว เรด การบริจาค และอัปเดตผู้ชมอย่างรวดเร็ว ภาพข้อมูลสินค้า/แจกของรางวัลยังพึ่งส่วน DOM ที่แสดงในหน้ารายการ
  • จับอีเวนต์สตรีม (Capture Stream Events) ควบคุมอีเวนต์ระบบ Whatnot และอัปเดตเมทาดาทาประมูล/แค็ตตาล็อก แถวเข้าร่วมยังต้องใช้ จับอีเวนต์สตรีม "joined"; จำนวนผู้ชมยังทำตามสวิตช์ viewer/hype
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
viewer_update จำนวนผู้ชมเปลี่ยนจากอัปเดตสตรีมสด websocket โดยใช้การตรวจ DOM เป็นทางสำรอง meta เป็นจำนวนเต็มผู้ชม
donation อีเวนต์ทิปและการร่วมสมทบบูสต์ชุมชน Whatnot websocket hasDonation มียอดที่จัดรูปแบบ บริบทเฉพาะ websocket อยู่ใน meta.
raid อีเวนต์เรด Whatnot websocket รวมคำตอบกิจกรรมย้อนหลัง meta.numRaiders รวมเมื่อ Whatnot ให้มา
joined แถวแชตที่เนื้อหาหลังปรับรูปแบบขึ้นต้นด้วย joined, เมื่อ จับอีเวนต์สตรีม "joined" เปิดอยู่ ใช้ป้ายอีเวนต์สตริงสำหรับประกาศเข้าร่วม (ไม่ใช่บูลีน true).
auction_update เมื่อสถานะประมูลสดส่วนท้ายเปลี่ยน (ข้อความผู้ชนะ/กำลังนำ ชื่อ ราคาเสนอ ราคา เวลา สถานะขายแล้ว) มักเร็วขึ้นด้วยแพ็กเก็ตวงจรประมูลผ่าน websocket อีเวนต์ที่มีเฉพาะเมทาดาทา ไม่มี chatname/chatmessage; ข้อมูลอยู่ใน meta (ตัวอย่างเช่น meta.title, meta.bids, meta.price, meta.timer, meta.status).
commerce_update เมื่อส่วนแค็ตตาล็อกเปลี่ยน (สินค้า surprise sets การแจกของรางวัลที่จะมาถึง) มักเร็วขึ้นด้วยแพ็กเก็ตวงจรแจกของรางวัล/สินค้าผ่าน websocket ภาพข้อมูลที่มีเฉพาะเมทาดาทา พร้อมจำนวนแต่ละส่วนและอาร์เรย์รายการใน meta.products, meta.surpriseSets, และ meta.upcomingGiveaways.
auction_started, new_bid, auction_ended, product_sold ได้รับการแจ้งเตือน websocket สดที่ตรงกัน เป็นอีเวนต์รายตัว แยกจากภาพข้อมูลแสดงผลเดิม platform/type: "whatnot", ข้อความธรรมดา chatname, userid เมื่อให้มา ชื่อสินค้าใน subtitle, และข้อความธรรมดา chatmessage พร้อม textonly: true รหัสและรายละเอียดประมูลที่มีอยู่ใน meta: productId, auctionId, orderId, transactionId, livestreamId, bidId, bids, auctionEndTime, และ status ตัวเลือกเพิ่มเติม price เป็นหน่วยหลักของสกุลเงิน พร้อม priceText และ currency เมื่อให้มา
payment_failed ได้รับการแจ้งเตือน websocket สดว่าชำระเงินไม่สำเร็จ ช่องผู้ซื้อ สินค้า และรหัสที่มีอยู่ชุดเดียวกัน พร้อม meta.paymentStatus: "failed" เมื่อมีเพียง product.purchaserUserId ระบุผู้ซื้อ จะเติมค่าใน userid ในอีเวนต์ขาย/ชำระเงิน และชื่อผู้ซื้อคงว่าง ไม่อนุมานผู้ซื้อจากการประมูลอื่นหรือก่อนหน้า
payment_succeeded ได้รับการแจ้งเตือน websocket สดว่าชำระเงินสำเร็จ meta.paymentStatus: "succeeded", พร้อมผู้ซื้อ สินค้า รหัสคำสั่งซื้อ และช่องข้อมูลอื่นที่อนุญาตซึ่งการแจ้งเตือนนั้นให้มา ยังคงเป็นอีเวนต์ชำระเงินแยก ไม่ส่งอีกหนึ่งอีเวนต์ purchase หรือการบริจาค ช่องที่ขาดคงว่างหรือไม่ใส่ แม้การขายก่อนหน้าเคยให้มา

การอัปเดตแสดงประมูล/การค้ายังคงเป็นภาพข้อมูลจาก DOM หากต้องการจับคู่อีเวนต์ websocket รายตัวใน Event Flow ให้ใช้ ประเภทอีเวนต์ (ขั้นสูง), เลือก อีเวนต์กำหนดเอง, แล้วป้อนชื่อให้ตรงทุกตัว ป้ายกำกับใช้ **{username}**\n{subtitle} พร้อมน้ำหนักข้อความที่เลือก เงื่อนไขเปรียบเทียบได้กับ meta.paymentStatus พร้อม failed ส่วน ตัวอย่างป้าย Whatnot ที่นำเข้าได้ พร้อมใช้ การตั้งค่าจับอีเวนต์สตรีมเดิมยังมีผล

ช่องเพิ่มเติมที่เลือกใช้ได้ ได้แก่ meta.catalogProductId (ค่าของแพ็กเก็ต product.productId), meta.parentProductId (product.parentId), meta.transactionType (ประเภทการขายของ Whatnot โดยไม่เปลี่ยนแปลง) และ meta.placeOrderErrorReason (รหัสข้อผิดพลาดคำสั่งซื้อ/การชำระเงินที่ Whatnot ส่งมา) การอ้างอิงสินค้าเหล่านี้อธิบายแค็ตตาล็อกหรือประกาศขายหลัก ไม่ได้แทนรหัสคำสั่งซื้อ จำนวนสต็อกไม่ถือเป็นจำนวนที่ซื้อ

สำหรับระบบอัตโนมัติเมื่อชำระเงินสำเร็จ ให้ตั้ง ประเภทอีเวนต์ (ขั้นสูง) ตัวเรียกเป็น อีเวนต์กำหนดเอง: payment_succeeded, และกรองแหล่งข้อมูลเป็น Whatnot เงื่อนไขและเทมเพลตเดิมใช้ช่องของอีเวนต์นั้นได้คือ userid, chatname, subtitle และ meta.orderId โดยตรง ไม่ต้องจำรายการซื้อไว้หากการแจ้งเตือนมีรายละเอียดที่จำเป็น

การประมูลจบหรือสินค้าถูกทำเครื่องหมายว่าขายแล้วไม่ได้ยืนยันว่าชำระเงินสำเร็จ การแจ้งเตือนเหล่านี้จึงไม่ส่งเป็นรายการชำระแล้ว purchase อีเวนต์และไม่ตั้งยอดบริจาค อีเวนต์สำเร็จส่งเฉพาะเมื่อได้รับ payment_succeeded การแจ้งเตือน การจับข้อมูลไม่ตรวจการชำระเงินสำเร็จเป็นระยะหรืออนุมานจากการขาย ส่วนอื่น paymentStatus ค่าส่งต่อเฉพาะเมื่อมีอย่างชัดเจนในแพ็กเก็ตที่จับได้ ไม่ใส่รหัสที่ขาด รหัสสินค้าอย่างเดียวอาจครอบคลุมหลายการขาย จึงใช้รหัสคำสั่งซื้อ/ประมูลที่ให้มาเพื่อเชื่อมการแจ้งเตือน การจับข้อมูลไม่จำการซื้อหรือจับคู่อัปเดตชำระเงิน ขั้นตอนนั้นต้องตั้งอย่างชัดเจนใน Event Flow แพ็กเก็ตซ้ำช่วงสั้นจากสะพานจับข้อมูลเดิมสองตัวจะถูกระงับ ไม่ส่งต่อออบเจ็กต์คำสั่งซื้อ/ชำระเงินดิบ

eBay Live

การเชื่อมต่อผู้ขาย eBay ใน Monetization ต้องตั้งค่าบริการ SSN eBay และได้รับความยินยอม OAuth จากผู้ขาย การจับ eBay Live ด้านล่างทำงานแยกกัน โหมด Sandbox ใช้ URL ประกาศขาย sandbox ระบุผู้ซื้อว่า "eBay Sandbox buyer" และขึ้นต้นข้อความด้วย "Sandbox test purchase:" การซื้อ Sandbox คงรูปแบบการซื้อเดียวกันและเรียกการแจ้งเตือน/การกระทำแชตที่เปิดไว้ขณะทดสอบได้ ข้อกำหนดการชำระเงินที่ใช้จริงส่ง event: "purchase", พร้อม type และ platform ตั้งเป็น ebay ต้องเป็นคำสั่งซื้อที่ชำระแล้วและตรงกับสินค้าที่เลือก id เป็นตัวระบุบรรทัดคำสั่งซื้อแบบทึบที่คงที่; chatname เป็น "eBay buyer", chatmessage เป็นข้อความธรรมดา (textonly: true), subtitle เป็นชื่อสินค้าและตัวเลือกเพิ่มเติม contentimg เป็นภาพของรายการนั้น meta.ebayPurchase มี itemId, itemName, quantity, และค่าสาธารณะ url ไม่มีตัวตนผู้ซื้อ ข้อมูลจัดส่ง hasDonation หรือ donoValue รวมไว้ ต่างจากการอัปเดตประมูลหรือสต็อกที่ดึงจากหน้า ซึ่งไม่ยืนยันการชำระเงิน

การใช้งานในโค้ด: sources/ebay.js

  • เปิดอย่างใดอย่างหนึ่ง /ebaylive/events/<id>/chat หรือ /ebaylive/events/<id>/stream ทั้งคู่ได้รับฟีดประมูลสดเดียวกัน
  • ฟีด WebSocket สาธารณะให้ข้อมูลประมูล ราคาเสนอ ผู้ชนะ การต่อเวลา และการเปลี่ยนสต็อก ส่วนคำค้น GraphQL แบบอ่านอย่างเดียวให้รายละเอียดประกาศขาย การจับ DOM ยังคงเป็นทางสำรองเมื่อไม่มีข้อมูลเครือข่าย
  • จับอีเวนต์สตรีม (Capture Stream Events) ควบคุมภาพข้อมูลเมทาดาทา (auction_update, commerce_update); ตัวนับผู้ชมยังเคารพสวิตช์ viewer/hype
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
viewer_update เมื่อจำนวนผู้ชมอีเวนต์ปัจจุบันเปลี่ยน (จำนวนส่วนหัวหรือค่าสำรองจากป้ายอีเวนต์สด) meta เป็นจำนวนเต็มผู้ชม
follower_update เมื่อ endpoint สถิติผู้ขายคืนจำนวนผู้ติดตามผู้ขาย meta เป็นจำนวนเต็มผู้ติดตาม แหล่งข้อมูลตรวจ endpoint ผู้ขายทุก 60 วินาที แต่ endpoint อาจยังคืนค่าแคชนานสูงสุด 5 นาที
auction_update เมื่อเมทาดาทาการประมูลที่ใช้งานเปลี่ยน อีเวนต์ที่มีเฉพาะเมทาดาทา การจับเครือข่ายตั้ง meta.sourceMode เป็น network และให้ title, price, bidder, winner, bids, timer และ endingAt meta.ebay มี eventId, listingId, ระเบียนประกาศขาย GraphQL (listing), ประกาศขายปัจจุบันจากซ็อกเก็ตสาธารณะ (eventListing), และอัปเดตการประมูลล่าสุด (update) ข้อมูลเหล่านี้คงหมวดหมู่ ภาพ สกุลเงิน จำนวน รายละเอียดการเปิดกล่องการ์ด ผลประมูล และเวลา โดยไม่ยุบจนรายละเอียดแพลตฟอร์มหายไป ระเบียน GraphQL เป็นภาพข้อมูลที่ดึงมา ส่วนประกาศขายและอัปเดตผ่านซ็อกเก็ตมีสถานะสดที่ใหม่กว่า ประวัติตอนเริ่ม/เชื่อมต่อใหม่จะรวมเข้าภาพข้อมูลปัจจุบัน แทนการส่งเป็นชัยชนะเก่า การนำประกาศขายที่นำเสนอทั้งหมดออกจะส่ง status: "idle" พร้อม cardCount: 0 เพื่อล้างการประมูล ทางสำรอง DOM คงช่องการ์ดตัวเล่นหรือตัวอย่างอีเวนต์
commerce_update เมื่อส่วนภาพข้อมูลแค็ตตาล็อก/อีเวนต์สดเปลี่ยน ภาพข้อมูลที่มีเฉพาะเมทาดาทาใน meta โหมดเครือข่ายรวม eventId, navigation.viewerCount และ playerCards สำหรับประกาศขายที่นำเสนอปัจจุบัน แต่ละรายการมีรายละเอียดรูปแบบเดียวกัน ebay ออบเจ็กต์เป็นภาพข้อมูลประมูล รายการการ์ดว่างล้างประกาศขายที่นำออกแล้ว ทางสำรอง DOM อาจรวม liveEvents, livePreview, currentEvent และ upcomingEvents.
reaction เมื่อ eBay Live แสดงภาพเคลื่อนไหวหัวใจ/รีแอ็กชัน ส่งตรงไปยังเป้าหมายรีแอ็กชันโดยเฉพาะ meta.reactionType คือ heart; eBay ไม่เปิดเผยชื่อรายผู้ใช้สำหรับภาพเคลื่อนไหว DOM เหล่านี้

อีเวนต์เมทาดาทา eBay ตั้งใจไม่รวม chatname/chatmessage; โอเวอร์เลย์ปลายทางควรแสดงจาก data.event + data.meta เท่านั้น

Kick – การจับ DOM มาตรฐาน

การใช้งานในโค้ด: sources/kick.js

  • ต้องใช้เซสชันที่ยืนยันตัวตนเพื่อดึงภาพโปรไฟล์และตราสมาชิก
  • ตรวจอีเวนต์ได้จำกัดโดยจับคู่ข้อความแชตและตรา จำนวนผู้ชมยังทำงานเมื่อเปิดสวิตช์
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
gift ตรวจพบของขวัญ KICKs จากภาพสติกเกอร์และยอดสกุลเงิน Kick ที่มองเห็น hasDonation มีค่า N KICKs (1 KICK สำหรับหนึ่งชิ้น) เมื่อมียอดที่มองเห็น; contentimg มีภาพของขวัญ คงข้อความเดิมไว้
reward การแลกรางวัล (“has redeemed …”) chatmessage มีข้อความแลกรางวัล
true (บูลีน) ประกาศระบบทั่วไปที่ไม่ตรงรูปแบบของขวัญหรือรางวัล ใช้ chatmessage เนื้อหาเพื่อตัดสินการแสดงผล; ค่าบูลีน true หมายถึง "อีเวนต์ระบบ – ไม่ทราบประเภท"
viewer_update ตรวจ API ช่อง Kick ทุก 30 วินาที (เฉพาะเมื่อเปิดสถิติผู้ชม) meta จำนวนเต็มของผู้ชม สำหรับสมาชิก การติดตาม หรือทิป ใช้สะพานเชื่อม Kick ด้านล่าง

Kick – Websocket/สะพานเชื่อม

การใช้งานในโค้ด: sources/websocket/kick.js พร้อมตัวช่วยร่วมใน providers/kick/core.js

  • OAuth ผ่านสะพานเชื่อม Social Stream Kick ขอบเขตปัจจุบันคือ user:read, channel:read, channel:write, channel:rewards:read, chat:write, events:subscribe, moderation:ban, moderation:chat_message:manage, และ kicks:read โทเค็นรีเฟรชอัตโนมัติ
  • การจัดเตรียม webhook ของ Kick อาจใช้เวลาหลายนาที UI แสดงรายการสมัครอีเวนต์ที่ใช้งานของแต่ละช่อง
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message ข้อมูลแชตจากสะพานเชื่อม meta.plainText มีข้อความธรรมดา (ยังมีอีโมจิได้) ตรารวมจากแพลตฟอร์ม + แคชโปรไฟล์ การตอบในเธรดเติมค่าใน initial, reply, และ meta.reply เมื่อมีรายละเอียดตอบกลับหรือข้อความต้นทางในแคช
reward channel.reward.redemption.updated, รวมข้อมูลแชต/ระบบจากสะพานเชื่อมที่ดูเหมือนการแลกรางวัล meta รวมรหัสรางวัล/การแลก ชื่อ ต้นทุน สถานะ อินพุตผู้ใช้ และผู้แลก
new_subscriber channel.subscription.new. membership กำหนดเป็นบทบาท subscriber; meta รวม { subscriber, plan }.
resub channel.subscription.renewal. meta.duration (เดือน) และ meta.plan พร้อมใช้; subtitle สรุปช่วงต่อเนื่อง
subscription_gift channel.subscription.gifts. meta.totalGifted, meta.gifter; ตราสำรองเป็นไอคอน 💝
donation อีเวนต์สนับสนุน/ทิปที่ตรวจจากการคาดคะเนประเภทอีเวนต์ ของขวัญ KICKs ใช้ gift ด้านล่าง hasDonation มียอดที่จัดรูปแบบ; meta มี { amount, currency, supporter, message, giftName }.
gift kicks.gifted (ของขวัญ KICKs) ตรงกับตัวดึงข้อมูล DOM hasDonation มีค่า N KICKs (1 KICK สำหรับหนึ่งชิ้น); contentimg มีภาพของขวัญเมื่อมี รายละเอียดของขวัญแบบมีโครงสร้างยังอยู่ใน meta.
raid การจัดการความเข้ากันได้สำหรับข้อมูลซ็อกเก็ตรูปแบบ host เดิม เช่น App\Events\StreamHostEvent. รายการอีเวนต์อย่างเป็นทางการปัจจุบันของ Kick ไม่มีการสมัคร raid/host หากได้รับข้อมูลแบบเดิมที่เข้ากันได้ จะจับคู่เป็นค่ามาตรฐาน raid; อย่าพึ่งค่านี้สำหรับขั้นตอน Kick ปัจจุบัน
new_follower channel.followed. ไอคอนผู้ติดตามมาจากแคชโปรไฟล์; follower_update ทำงานเมื่อ Kick ให้ยอดสะสม
follower_update สะพานเชื่อมให้จำนวนผู้ติดตามในข้อมูล webhook meta ยอดรวมจำนวนเต็ม แดชบอร์ดใช้สำหรับเป้าหมายผู้ติดตาม
stream_online / stream_offline livestream.status.updated. meta มีเนื้อหาสถานะดิบจาก Kick (is_live, title ฯลฯ)
viewer_update livestream.status.updated เมื่อ Kick รวมยอดผู้ชมพร้อมกัน meta จำนวนเต็มของผู้ชม ส่ง 0 เมื่อสถานะออฟไลน์เพื่อล้างตัวนับเก่าค้าง
user_banned moderation.banned จากสะพานเชื่อม/webhook หรืออีเวนต์แบนจากซ็อกเก็ตแชต Kick อีเวนต์ที่มีเฉพาะเมทาดาทาสำหรับวิดเจ็ตดูแลแชต meta รวมชื่อผู้ใช้/ชื่อแสดง รหัสผู้ใช้ URL อวาตาร์/โปรไฟล์ ผู้ดูแล เหตุผล ระยะเวลาแบน/พัก และสถานะถาวร

การค้นโปรไฟล์ใช้ profileCache; mapBadges รวมไฟล์ตรา Kick กับ SVG ที่แคชไว้เมื่อมี เมื่อ Kick รายงานบริจาคเป็น KICKs สะพานเชื่อมแปลงเป็น hasDonation พร้อม meta.amount พร้อม currency ใช้ "KICKs" เป็นค่าสำรอง ข้อมูลแชตรวม meta.messageId เมื่อสะพานเชื่อมให้รหัสข้อความ Kick ดั้งเดิมเพื่อให้ซิงก์ลบตรงข้อความ ข้อมูลตอบกลับรวม meta.reply พร้อมค่าต้นทาง messageId, author, และ text เมื่อทราบ รายละเอียดตอบกลับที่ให้มายังใช้ได้แม้ข้อความต้นฉบับไม่อยู่ในแคช การตอบที่มีเฉพาะรหัสและไม่มีบริบทแคชอาจยังไม่มีข้อความอ้างอิงที่มองเห็น

Kick Websocket: เอกสารอ้างอิงอีเวนต์ฉบับย่อ

data.event สถานการณ์
new_followerผู้ใช้ติดตามช่อง
new_subscriberการสมัครสมาชิกใหม่
resubการต่ออายุการสมัครสมาชิก
subscription_giftการสมัครสมาชิกแบบของขวัญ
rewardการแลกรางวัลช่องหรือข้อความแชต/ระบบแบบรางวัล
donationอีเวนต์ทิป/สนับสนุน
giftอีเวนต์ของขวัญ KICKs
raidอินพุต host/raid แบบเดิมเพื่อความเข้ากันได้เท่านั้น ไม่ใช่การสมัครอีเวนต์ Kick อย่างเป็นทางการปัจจุบัน
follower_updateยอดผู้ติดตามทั้งหมด
stream_onlineสตรีมเริ่มถ่ายทอดสด
stream_offlineสตรีมจบแล้ว
user_bannedผู้ใช้ถูกแบนหรือพักชั่วคราว

VPZone - WebSocket

การใช้งานในโค้ด: sources/websocket/vpzone.js

  • เชื่อมต่อกับ wss://chat.vpzone.tv/ws?channel=USERNAME; OAuth ขอ profile:read, chat:read, chat:write, channel:read, channel:write, และ chat:moderate ป้อน bearer token ด้วยตนเองได้เช่นกัน
  • เฟรม VPZone แบบแบน เช่น type: "msg" ปรับเป็นข้อมูลแชตมาตรฐาน
  • ฝั่งแพลตฟอร์ม delete_message / clear_chat เฟรมนำแถวที่ตรงกันออกจากแผงด็อก สวิตช์เพิ่มเติมซิงก์การลบและบล็อกในแผงด็อกกลับ VPZone ได้ (เฉพาะเจ้าของช่อง)
  • เจ้าของช่องมีแผง Stream Info ภายในหน้าเพื่ออัปเดตชื่อและหมวดหมู่สตรีมสด (รูปแบบเดียวกับหน้าแหล่ง Twitch)
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message VPZone msg, message, new_message, หรือ chat_message เฟรม websocket chatname มาจาก username; chatmessage มาจาก body; แฟล็ก subscriber/owner/mod/VIP คัดลอกลงใน chatbadges, แฟล็กบทบาทระดับบนสุด และ meta รหัสดั้งเดิมเติมลงใน data.id และ meta.messageId.
viewer_update VPZone presence เฟรมพร้อม count หรือช่องผู้ชมที่เทียบเท่า meta เป็นจำนวนเต็มผู้ชมสด สมทบในยอดรวม viewer_updates.
new_subscriber VPZone subscribe / subscription เฟรม membership ตั้งเป็น Subscriber เมื่อมีแฟล็กสมัครสมาชิก
subscription_gift VPZone gift / gift_subscription เฟรม ใช้ชื่ออีเวนต์สมาชิกแบบของขวัญเดียวกับ Twitch, Kick, Rumble และ Velora subtitle มีจำนวนของขวัญ (x5) หรือผู้รับ
message + hasDonation VPZone system เฟรมพร้อม metadata.kind: "pixels_cheer" (ทิป Pixels) แถวแชตที่มีการบริจาค; hasDonation เป็นป้ายยอด (เช่น 100 Pixels), meta.pixels จำนวนเต็ม event คงว่าง ตรวจทิปนี้จาก hasDonation อีเวนต์สนับสนุนจากสะพานเชื่อม Kick ใช้แทนเป็น event: "donation".
message คำตอบ VPZone msg เฟรมที่มี metadata.reply_to (รหัสข้อความ ผู้เขียน ข้อความย่อ — เตรียมข้อมูลซ้ำที่ฝั่งเซิร์ฟเวอร์) แสดงแบบการตอบกลับ Kick: initial เก็บป้าย "author: excerpt", reply ข้อความตอบกลับดิบ, meta.reply เป้าหมายแบบมีโครงสร้าง เคารพ ไม่รวม "replying to" การตั้งค่า
raid VPZone raid เฟรมพร้อม metadata.kind: "incoming". ข้ามเฟรมเรดขาออก; meta.viewers มีขนาดเรดเมื่อให้มา
shoutout VPZone shoutout เฟรม (!so คำสั่ง) meta.targetUser ระบุชื่อช่องที่กล่าวถึง
reward VPZone system เฟรมพร้อม metadata.kind: "channel_points_redeem". การแลกแต้มช่อง ใช้ชื่ออีเวนต์เดียวกับรางวัล Twitch
stream_online / stream_offline VPZone system เฟรมพร้อม metadata.kind: "stream_started" / "stream_ended". ระบุเป็นชื่อช่อง (เฟรมไม่มีผู้กระทำ)
new_follower VPZone follow เฟรม จับคู่เป็นรูปแบบอีเวนต์ผู้ติดตามมาตรฐาน
joined อีเวนต์ websocket แบบเข้าร่วม/แสดงตัวของ VPZone เมื่อ จับอีเวนต์สตรีม "joined" เปิดอยู่ จับคู่เป็นอีเวนต์ระบบรูปแบบแชต พร้อมเมทาดาทาผู้กระทำ VPZone ใน meta.

Joystick

การใช้งานในโค้ด: sources/joystick.js, sources/inject/joystick-ws.js, และ sources/websocket/joystick.js

  • แหล่งเว็บไซต์ Joystick 2.0 ปกติทำงานบนหน้าที่เข้าสู่ระบบ /u/<channel>/chat หน้า โดยอ่านค่าของหน้า ChatChannel, WhisperChatChannel, EventLogChannel, และ SystemEventChannel เฟรม Action Cable พร้อมทางสำรองจากแถวที่แสดงสำหรับ Electron และกรณีเชื่อมต่อใหม่
  • ข้อความแชตเว็บไซต์ใช้ช่องหลักเดียวกับ YouTube, Twitch และ Kick: ค่าดั้งเดิม id, chatname, chatmessage, chatimg, chatbadges, nameColor, membership, mod, private, username/userid, และ timestamp เมื่อ Joystick ให้มา เมื่อซ็อกเก็ตไม่มีสีชื่อผู้ใช้ แถวที่แสดงจะให้ค่าเดียวกัน nameColor ช่องที่แผงด็อกซึ่งเปิดสีใช้งาน
  • การแก้ข้อความฝั่งเว็บไซต์แทนแถวแผงด็อกที่ตรงกัน การลบ ปิดเสียง และบล็อกจะนำแถวที่ตรงกันออกโดยใช้รหัสดั้งเดิมหรือชื่อผู้ใช้
  • แหล่ง WebSocket แยกใช้ข้อมูลรับรองบอต Joystick (client_id + client_secret); แหล่งเว็บไซต์ใช้เซสชันหน้าที่เข้าสู่ระบบอยู่
  • อนุญาตสิทธิ์ที่ https://joystick.tv/api/oauth/authorize, แล้วแลก/รีเฟรชโทเค็นที่ https://api.joystick.tv/api/oauth/token.
  • เชื่อมต่อกับ wss://api.joystick.tv/cable และสมัครรับ GatewayChannel.
  • การแลกโทเค็น OAuth เพิ่มเติมใช้สำหรับ endpoint ตัวช่วย เช่น https://api.joystick.tv/api/users/stream-settings.
  • แหล่งแยกที่ใช้ข้อมูลรับรองบอตไม่ส่ง viewer_update แหล่งเว็บไซต์ที่เข้าสู่ระบบส่งจำนวนผู้ชมเมื่อซ็อกเก็ตหน้าส่งข้อมูลมา ตามคำอธิบายด้านล่าง
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message Joystick ChatMessage, BotMessage, new_message, bot_message, event_bot_message, pvp_message, และข้อความกระซิบ แชตปกติไม่มี event รหัสดั้งเดิมใส่ไว้ในระดับบนสุด id และ meta.messageId; บทบาทและสถานะส่วนตัวใช้ช่องระดับบนสุด/ตราที่มีมาตรฐานอยู่แล้ว
new_follower Joystick StreamEvent พร้อมประเภท Followed. ใช้รูปแบบผู้ติดตามมาตรฐานและตัดซ้ำกับแถวบอตที่ตรงกันของ Joystick ตัวเลือกเพิ่มเติม meta.userId/meta.followedAt รวมเฉพาะเมื่อ Joystick ให้มา
new_subscriber / subscription_gift ประเภทอีเวนต์ Joystick NewSubscription / GiftedSubscription. ใช้คีย์เมทาดาทาสมัครสมาชิกที่เข้ากันได้กับ Kick: eventType, subscriber, gifter, totalGifted, duration, และ plan.
donation Joystick StreamEvent ประเภท Tipped / TipMenu. hasDonation มียอดและหน่วยโทเค็นสำหรับการแปลง USD ร่วมเมื่อมี และตัดซ้ำแถวบอต Joystick ที่ตรงกัน meta ใช้คีย์อีเวนต์สนับสนุน Kick ที่กำหนดไว้: eventType, supporter, amount, currency, message, giftName, giftType, และ tier.
stream_online / stream_offline Joystick StreamEvent ประเภท เช่น Started, StreamResuming, Ended, StreamEnding. ใช้สำหรับระบบอัตโนมัติออนไลน์/ออฟไลน์ที่รับรู้ช่องทางรับส่ง
user_enter / user_leave Joystick UserPresence ประเภท enter_stream / leave_stream. การแจ้งเตือนการปรากฏตัวส่งเป็นข้อความอีเวนต์ และปิดได้ด้วยการตั้งค่าซ่อนอีเวนต์ การซ่อนอีเวนต์ยังระงับอีเวนต์สตรีมที่ไม่ใช่การบริจาค
viewer_update แหล่งเว็บไซต์ที่เข้าสู่ระบบได้รับ ViewerCountUpdated ผ่าน EventLogChannel. ใช้จำนวนเต็มธรรมดา meta, ตรงกับ YouTube, Twitch และ Kick ส่งเฉพาะเมื่อเปิดโหมดจำนวนผู้ชมหรือ hype แหล่งข้อมูลแยกที่ใช้ข้อมูลรับรองบอตยังไม่ได้รับจำนวนผู้ชม
follower_update / subscriber_update อีเวนต์อัปเดตจำนวนผู้ติดตาม/สมาชิก Joystick ใช้จำนวนเต็มธรรมดา meta, ตรงกับข้อกำหนดตัวนับ Twitch
การแจ้งเตือนภายในที่ข้าม ChatMessageReceived, สถานะอุปกรณ์ และการรีเฟรชวิดเจ็ตที่ยังไม่ได้จับคู่ เช่น สถานะเป้าหมายทิป/PvP/subathon เป็นการแจ้งเตือนช่องทางรับส่งหรือสถานะหน้า ไม่ใช่อีเวนต์ Social Stream จึงไม่แปลงเป็นค่าที่สร้างขึ้นเอง snake_case ชื่ออีเวนต์ ส่วนค่าจริง ChatChannel/new_message แถวยังคงเป็นข้อมูลแชตเพียงชุดเดียว

XP Sync

การใช้งานในโค้ด: sources/xpsync.js

  • แถวแชตใช้ช่องข้อมูลมาตรฐานพร้อม type: "xpsync", รวมผู้เขียน ข้อความ อวาตาร์ ตราภาพและ SVG ในบรรทัด สีชื่อ สมาชิก แฟล็กผู้ดูแล/สมาชิก/บอต และ UUID ข้อความดั้งเดิมเป็น id เมื่อมี
  • การตอบกลับทำตามแนวทางแหล่ง DOM ของ YouTube, Twitch และ Kick: เว้นแต่ปิดคำนำหน้าตอบกลับ initial มีผู้ใช้ที่ตอบกลับถึง, reply คงข้อความที่ไม่มีคำนำหน้า และ chatmessage ได้รับคำนำหน้าตอบกลับที่มองเห็น
  • แถวไฮไลต์ Sparks ถูกจับแม้ XPSync แสดงโดยไม่มีคลาสแถวแชตปกติหรือรหัสข้อความ ยอดที่มองเห็นให้ผ่าน hasDonation เป็น N Sparks.
  • เมื่อเปิดการจับอีเวนต์ แถวที่มี “just followed” หรือ “followed the channel” ส่ง event: "new_follower".
  • เมื่อเปิดจำนวนผู้ชม แผงด็อกแชตถาวรส่ง event: "viewer_update" จากจำนวนวิดีโอสดที่หน้า XPSync โหลดอยู่แล้ว และรีเฟรชจากอัปเดตหน้าสดของ XPSync ไม่ต้องมีข้อมูลรับรอง SSN แยก

Instagram – การจับ Live REST และกล่องข่าวขาเข้า

การใช้งานในโค้ด: sources/instagram.js และ sources/instagramlive.js (สำเนาที่เหมือนกัน)

  • บนหน้าถ่ายทอดสด (/<user>/live/?broadcast_id=...), แชตสดมาจากเว็บ API ของ Instagram เอง โดยตรวจเป็นระยะจากต้นทางเดียวกันพร้อมคุกกี้เซสชัน: GET /api/v1/live/{broadcast_id}/get_comment/?last_comment_ts={ts} ทุกประมาณ 2 วินาที และ POST /api/v1/live/{broadcast_id}/heartbeat_and_get_viewer_count/ ทุกประมาณ 5 วินาทีเมื่อเปิดจำนวนผู้ชม หลังล้มเหลวต่อเนื่อง 3 ครั้ง (หรือเมื่อไม่มี broadcast_id ค้นพบได้) แหล่งข้อมูลกลับไปอ่าน DOM แชตที่แสดง
  • ตรวจฟีดกิจกรรมของบัญชีตัวเองผ่าน POST /api/v1/news/inbox/ ทุกประมาณ 45 วินาทีบนหน้า Instagram ใดก็ได้ การตรวจครั้งแรกใช้ตั้งชุดตัดซ้ำเท่านั้น จึงไม่เล่นประวัติย้อนหลัง เรื่องราวตัดซ้ำด้วย tuuid.
  • ส่วนหัว API ที่จำเป็น (ทั้งหมดคงที่/คำนวณหาได้): X-IG-App-ID: 936619743392459, X-CSRFToken (จากคุกกี้), X-ASBD-ID: 359341, X-Requested-With: XMLHttpRequest, Content-Type: application/x-www-form-urlencoded.
  • ทุกอีเวนต์ในฟีดกิจกรรมใช้ type: "instagram"; แชตสดยังเป็น type: "instagramlive" อีเวนต์ไลก์ใช้เส้นทางเบื้องหลังปกติ: ระบบเบื้องหลังส่งหนึ่งสำเนาไปยัง Reactions Overlay โดยเฉพาะ แล้วรวมในฟีดแชต/อีเวนต์หลักเฉพาะเมื่อ capturelikeevent เปิดอยู่ ตรงกับ TikTok และ MeetMe hideevents และตัวกรองอีเวนต์กำหนดเองบล็อกทุกที่ เนื่องจากอีเวนต์กล่องขาเข้าเป็นของบัญชีที่เข้าสู่ระบบ จึงระงับเมื่อดูถ่ายทอดสดของคนอื่น (ทั้ง /<user>/live/ หน้าและอยู่ในตัวดู stories การระบุเจ้าของทำแยกตามโปรไฟล์และลองใหม่เมื่อค้นไม่สำเร็จ) และส่งบนไลฟ์ของคุณเองกับทุกหน้าที่ไม่ใช่ไลฟ์ มีแท็บ Instagram ที่ใช้งานหนึ่งแท็บตรวจกล่องขาเข้าบัญชีในแต่ละครั้ง และตรวจเฉพาะเมื่อลงชื่อเข้าใช้
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message (สด) รายการใหม่ใน get_comment คำตอบ (comments[]/system_comments[]), หรือแถวแชต DOM ใหม่เมื่อ REST ใช้ไม่ได้ ข้อมูลแชตมาตรฐาน, type: "instagramlive" REST ให้ค่าตรงของ user.username, user.profile_pic_url, และค่าที่ไม่ซ้ำ pk ใช้ตัดรายการซ้ำ
viewer_update heartbeat_and_get_viewer_count รายงานค่าที่เปลี่ยน viewer_count, เมื่อเปิดการจับจำนวนผู้ชมหรือโหมด hype meta จำนวนเต็มของผู้ชม หยุดตรวจเมื่อ broadcast_status ไม่เป็นอีกต่อไป "live".
stream_online / stream_offline stream_online ทำงานหนึ่งครั้งเมื่อเซสชันถ่ายทอด REST เริ่ม; stream_offline ทำงานเมื่อ heartbeat รายงานสถานะไม่สดของ broadcast_status (ต้องเปิดการจับจำนวนผู้ชมหรือโหมด hype) อีเวนต์ที่มีเฉพาะเมทาดาทา ตรงกับคำศัพท์สถานะสตรีมร่วมที่ Twitch และ Joystick ใช้
new_follower รายการข่าวในกล่องขาเข้าที่มีประเภทติดตาม notif_name (หรือ story_type 12) ปรากฏ chatname เป็นผู้ติดตามใหม่, chatimg ภาพโปรไฟล์ของบุคคลนั้น, chatmessage ข้อความกล่องขาเข้า (เช่น "x เริ่มติดตามคุณ")
follow_request หนึ่ง private_user_follow_request เรื่องราวปรากฏ (บัญชีส่วนตัวได้รับคำขอแทนการติดตามโดยตรง) รูปแบบเดียวกับ new_follower, แยกกันไว้เพื่อให้ระบบอัตโนมัติอนุมัติคำขอหรือทักทายต่างกันได้
liked รายการข่าวในกล่องขาเข้าที่มีประเภทไลก์ notif_name (รวมถึง comment_like) ปรากฏ คำศัพท์ไลก์ร่วมกับ TikTok/MeetMe chatname เป็นผู้กระทำ, chatmessage ข้อความกล่องขาเข้า (เช่น "x ถูกใจรูปภาพของคุณ")
message (ความคิดเห็นในโพสต์ของตัวเอง) รายการข่าวในกล่องขาเข้าที่มีประเภทความคิดเห็น notif_name ปรากฏ แถวแชตธรรมดา (event: false), type: "instagram"; chatmessage มีข้อความกล่องขาเข้ารวมข้อความย่อความคิดเห็น
notification รายการข่าวในกล่องขาเข้าประเภทอื่น (การกล่าวถึง แท็ก การซื้อของ ฯลฯ) ตัวครอบคลุมทั่วไป; meta.notifName และ meta.storyType คงการจัดประเภทเรื่องราวแบบดิบ

Facebook Live

การใช้งานในโค้ด: sources/facebook.js (ดึงข้อมูล DOM) และสะพานเชื่อม Graph API เพิ่มเติมที่ sources/websocket/facebook.html

  • การจับ DOM อ่านความคิดเห็น Facebook ที่แสดง ส่วนสะพานเชื่อม Graph API ของเพจที่จัดการอ่านความคิดเห็นวิดีโอ ทั้งคู่ใช้ type: "facebook", ช่องแชตมาตรฐาน และไม่มี event สำหรับความคิดเห็นปกติ สะพานเชื่อม API ยังมีช่องเพิ่มเติม platform: "facebook".
  • สะพานเชื่อม API ใช้ userid สำหรับรหัสผู้เขียนเมื่อมี, timestamp สำหรับเวลาสร้างที่ถูกต้องในมิลลิวินาที Unix และ contentimg สำหรับภาพแนบ HTTP(S) ที่ API ให้มา ความคิดเห็นที่มีเฉพาะภาพอาจมีค่าว่างใน chatmessage. textonly มีผลเฉพาะเนื้อหาข้อความ: ข้อความดิบเมื่อเป็น true และ HTML ที่ escape แล้วเมื่อเป็น false
  • บริบทความคิดเห็น API ใช้ meta.messageId (รหัสความคิดเห็นดั้งเดิม), meta.permalink, meta.videoId, และ meta.pageId รุ่น API ก่อนหน้าใช้ meta.commentId, ช่องผู้เขียน/เวลาที่ทำซ้ำไว้ใน meta, และส่งไฟล์แนบดิบไปไว้ที่นั่น รุ่นใหม่ใช้ช่องผู้เขียน/เวลา/สื่อมาตรฐานแทน โดยไม่ได้เพิ่มการซิงก์การลบ
  • จำนวนผู้ชมรีเฟรชเฉพาะเมื่อเปิดใช้ สะพานเชื่อม API อ่านค่าพร้อมกัน live_views; ไม่ใช้ยอดวิววิดีโอสะสมมาแทนหรือสร้างศูนย์เมื่อไม่มีจำนวน การจับ API ไม่อนุมาน Stars สมาชิก ไฮไลต์ หรือการตอบกลับจากข้อความความคิดเห็นปกติ
  • จับ Stars จาก DOM แชตสดที่แสดงเมื่อ Facebook แสดงองค์ประกอบที่มองเห็น N sent ตัวระบุ; โดยเติมค่าใน hasDonation และ donoValue ที่ 100 Stars = $1 USD โดยไม่ตั้ง data.event.
  • สำหรับทดสอบ ให้เพิ่ม ssnreplay=1 ลงใน URL Facebook Live เพื่อประมวลผลแถวแชตที่มองเห็นอยู่แล้วหลังรีเฟรช
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
viewer_update DOM ตรวจตราจำนวนผู้ชมสด ส่วนสะพานเชื่อม API ตรวจยอดผู้ชมสดพร้อมกันเมื่อเปิดใช้ meta จำนวนเต็มของผู้ชม ตรงกับแหล่งอื่น ข้ามจำนวนที่หายไปหรืออ่านไม่ได้ ศูนย์จริงเป็นค่าที่ใช้ได้
hasDonation Facebook Stars ที่แสดงใน DOM แชตสด ข้อมูลแชตมาตรฐาน; hasDonation มียอด Stars ที่มองเห็น เช่น 100 Stars, และ donoValue มีมูลค่า USD โดย Stars ไม่ตั้ง data.event.
highlightColor Facebook แสดงองค์ประกอบที่มองเห็น HIGHLIGHTED ป้ายกำกับ ใช้ช่องแชตปกติและ highlightColor; ไม่มี data.event ถูกตั้งค่า Stars ยังใช้ hasDonation.

Online Church

การใช้งานในโค้ด: sources/onlinechurch.js

  • พึ่งการดึง DOM จากแชตสาธารณะและส่วนหัวสื่อ
  • จำนวนผู้ชมรีเฟรชเฉพาะเมื่อ แสดงจำนวนผู้ชม หรือเปิดโหมด hype
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message รายการใหม่ปรากฏใต้ #publicchat. ข้อมูลแชตมาตรฐานพร้อมชื่อผู้ส่ง อวาตาร์ ตรา และป้ายสมาชิกหากมีใน DOM
viewer_update ตรวจตราจำนวนผู้ชมสดในส่วนหัวสื่อทุก 10 วินาที meta จำนวนเต็มของผู้ชม ส่ง 0 เมื่อตราหายไปหรืออ่านไม่ได้ เพื่อล้างตัวนับเก่าค้าง

SharePlay.tv

การใช้งานในโค้ด: sources/shareplay.js

  • พึ่งการดึง DOM จากแถบแชตสดบนหน้าช่อง SharePlay
  • ส่งเฉพาะแถวแชตและการ์ดที่เพิ่มใหม่หลังตัวดึงข้อมูลเริ่มทำงาน โดยตั้งใจข้ามประวัติที่มีอยู่
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message แถวแชตใหม่ปรากฏในฟีดแชตหลัก ข้อมูลแชตมาตรฐานพร้อมผู้เขียน อวาตาร์ ภาพตรา และอีโมตที่คง HTML การตอบในเธรดเติมค่าเพิ่มใน initial, reply, และ meta.reply เมื่อแถวต้นทางยังอยู่
raid SharePlay แทรกการ์ด Blitz ในฟีดแชตสด จับคู่เป็นอีเวนต์เรดมาตรฐาน meta.cardType คือ "blitz", พร้อมตัวเลือกเพิ่มเติม meta.fromLogin และ meta.viewers เมื่อข้อความบนการ์ดให้ข้อมูล
shoutout SharePlay แทรกการ์ดกล่าวถึง/ติดตามในฟีดแชต ส่งเป็น data.event = "shoutout" ภาพแบนเนอร์การ์ดส่งต่อผ่าน contentimg, ส่วน meta.cardType และ meta.action คงข้อความป้าย/ปุ่มบนการ์ด
viewer_update ตรวจตราผู้ชมที่มองเห็นในส่วนหัวทุก 10 วินาที meta จำนวนเต็มของผู้ชม ส่งเฉพาะเมื่อ แสดงจำนวนผู้ชม หรือเปิดโหมด hype และส่ง 0 หากอ่านตราไม่ได้ เพื่อล้างตัวนับเก่าค้าง

Streamplace

การใช้งานในโค้ด: sources/streamplace.js

  • อ่านหน้าถ่ายทอดสดของ Streamplace ที่แสดงด้วย React และข้ามประวัติแชตที่มองเห็นเมื่อเริ่มจับ
  • ข้อความแบบส่งต่อ เช่น Name (Discord): message ปรับเป็นชื่อผู้ส่งที่ส่งต่อมา
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message แถวแชต Streamplace ใหม่ปรากฏหลังเริ่มจับข้อมูล ข้อมูลแชตมาตรฐานพร้อม nameColor, chatbadges, ลิงก์ที่คง HTML และช่องข้อมูลตอบกลับ initial, reply, และ meta.reply เมื่อมองเห็น
viewer_update ตราผู้ชมในส่วนหัวเปลี่ยนขณะเปิดการจับจำนวนผู้ชมหรือโหมด hype meta จำนวนเต็มของผู้ชม

WorldsWave

การใช้งานในโค้ด: sources/worldswave.js

  • รองรับหน้าถ่ายทอดสด WorldsWave และ URL แชตอย่างเดียว เช่น https://worldswave.com/kn_livecmd.php?cmd=viewStream&streamId=STREAM_ID&chatonly=1.
  • ใช้ค่าคงที่ data-ww-*/ww-chat-* มาร์กอัปเมื่อมี พร้อมคงตัวเลือก kontackt เดิมสำหรับหน้าแชตอย่างเดียวและเลย์เอาต์เก่า
  • ข้ามประวัติแชตเดิมเมื่อเริ่มจับข้อมูล ให้ทดสอบด้วยข้อความใหม่
  • จำนวนผู้ชมต้องใช้ แสดงจำนวนผู้ชม หรือโหมด hype ยังไม่ได้ทำอีเวนต์ของขวัญ/ทิปเฉพาะและการส่งกลับ แถวที่แสดงอาจยังให้ป้ายบริจาคผ่าน data-ww-donation.
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message แถวแชต WorldsWave ใหม่ปรากฏในหน้า ข้อมูลแชตมาตรฐานพร้อม type: "worldswave", ชื่อผู้ส่ง อวาตาร์ รหัสผู้ใช้หากมี สีชื่อ ตรา สถานะผู้ดูแล สมาชิก ค่าบริจาค ไฟล์แนบ และตัวตนช่อง รหัสข้อความ WorldsWave ที่คงที่แสดงเป็น meta.messageId และตัดซ้ำระหว่างแผงตัวอย่าง/แชตเต็มที่เปิดพร้อมกัน ภาพในบรรทัดข้อความยังผ่านการทำให้ปลอดภัยเมื่อปิดโหมดข้อความอย่างเดียว
viewer_update ยอดผู้ชมสดที่มองเห็นเปลี่ยนขณะเปิดการจับจำนวนผู้ชมหรือโหมด hype meta เป็นจำนวนเต็มผู้ชม ค่าคงที่ data-ww-viewer-count เป็นค่าที่เลือกใช้ก่อน ค่าแบบย่อเดิม เช่น 1.2K ปรับรูปแบบเป็นทางสำรอง

FLEX TV

การใช้งานในโค้ด: sources/flextv.js

  • อ่านแผงแชตที่แสดงบน https://www.flextv.co.kr/channels/*/live หน้า
  • ต้องมองเห็นแผงแชต ข้ามประวัติแชตเดิมเมื่อเชื่อมแหล่งข้อมูล จึงควรทดสอบด้วยแถวแชตใหม่
  • ยังไม่มีเอกสารเส้นทางจำนวนผู้ชม การบริจาค หรือการส่งกลับสำหรับแหล่งนี้
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message รายการใหม่ที่มองเห็นใน FLEX TV .chat-item แถวปรากฏในฟีดแชตสด ข้อมูลแชตมาตรฐานพร้อม type: "flextv", chatname, chatmessage, nameColor, ภาพตราใน chatbadges, และรายละเอียดสมาชิก FLEX ใน meta เมื่อให้ข้อมูลโดย data-member.

Seal Team Sloth

การใช้งานในโค้ด: sources/sealteamsloth.js

  • อ่านแชตป๊อปเอาต์ที่แสดงบน https://sealteamsloth.com/popout-chat/* หน้า
  • จำนวนผู้ชมต้องใช้ แสดงจำนวนผู้ชม หรือโหมด hype
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message แถวแชต Seal Team Sloth ใหม่ปรากฏในหน้า ข้อมูลแชตมาตรฐานพร้อม type: "sealteamsloth", ชื่อผู้ส่ง อวาตาร์ และเนื้อหาข้อความ
viewer_update ยอดผู้ชมสดที่มองเห็นเปลี่ยนขณะเปิดการจับจำนวนผู้ชมหรือโหมด hype meta เป็นจำนวนเต็มผู้ชม ค่าย่อ เช่น 1.2K ปรับรูปแบบให้เป็นมาตรฐาน

MeetMe - การจับ DOM และ WebSocket

การใช้งานในโค้ด: sources/meetme.js

  • อ่าน DOM แชตสดที่แสดงของ MeetMe บน app.meetme.com/live/view/... หน้าและภายใน api.gateway.meetme-live.com/web-live/... iframe
  • เมื่อ iframe websocket ใช้ได้ wss://video-live.meetme.com/ เฟรมถูกอ่านก่อนทางสำรอง DOM เพื่อจับอีเวนต์สดที่มีรายละเอียดมากกว่า
  • hideevents ระงับอีเวนต์ที่ไม่ใช่บริจาค ของขวัญ MeetMe และการบริจาคเพชรยังเติมช่องบริจาค capturejoinedevent เปิดประกาศเข้าร่วม/กลับเข้าร่วม ค่าที่ระบุผู้กระทำ liked อีเวนต์ใช้การกำหนดเส้นทางเบื้องหลังร่วมที่ควบคุมด้วย capturelikeevent; ค่ารวม reaction เอฟเฟกต์ยังระบุเป้าหมายเป็น Reactions Overlay อย่างชัดเจน
  • จำนวนผู้ชมใช้ค่าที่มองเห็นในส่วนหัว MeetMe ก่อน และใช้ยอด websocket เป็นทางสำรองเฉพาะเมื่อไม่มีค่า DOM ส่งเมื่อเปลี่ยนและส่งค่าล่าสุดซ้ำประมาณทุก 30 วินาทีขณะ showviewercount/hypemode เปิดอยู่ ยอดผู้ติดตามส่งเฉพาะเมื่อเปลี่ยนและจำกัดอัตราประมาณ 60 วินาที
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message ใหม่ SNSChatMessage ได้รับเฟรม websocket หรือรายการใหม่ ChatMessage_* แถว DOM ปรากฏใต้ ChatHistoryContainer_*. ข้อมูลแชตมาตรฐานพร้อมชื่อผู้ส่ง อวาตาร์ HTML/ข้อความของข้อความ และภาพ/ข้อความตรา รายละเอียดแถว DOM เป็นรูปแบบแบน meta คีย์ รวมถึง messageId, roomId, level, levelColor, badgeLabels, badgeSrcs, badgeClasses, isBouncer, isTopStreamer, isBestOfTheWeek, rank, และ rowClassName ข้อมูล Websocket ตั้ง meta.source = "websocket".
joined / rejoined / left SNSChatParticipant ได้รับเฟรมสร้าง อัปเดต หรือลบผ่าน websocket หรือ MeetMe แสดง DOM join-cell แถว ประกาศเข้าร่วม/กลับเข้าร่วมต้องใช้ จับอีเวนต์สตรีม "joined". ส่งประกาศระบบในรูปแบบแชตพร้อมชื่อ/อวาตาร์ผู้กระทำเมื่อ MeetMe ให้ข้อมูล meta.isNewViewer, meta.viewerLevelId, meta.isBouncer, และ meta.isSubscriber คงสถานะผู้ร่วมกิจกรรม
new_follower MeetMe แสดงแถว DOM ของการเพิ่มรายการโปรด/ติดตาม เช่น Favorited. ใช้คำศัพท์อีเวนต์ผู้ติดตามร่วม chatname เป็นผู้กระทำ, chatimg เป็นภาพโปรไฟล์ที่ตรวจพบเมื่อมี และค่าแบบแบน meta.favoriteText/meta.targetName คงรายละเอียดแถวต้นฉบับ
gift SNSGiftMessage ได้รับเฟรม websocket หรือ MeetMe แสดงภาพของขวัญในแถวแชต hasDonation มีป้ายของขวัญหรือค่าเพชรที่มองเห็น, contentimg มีภาพของขวัญเมื่อให้มา และคีย์แบบแบน เช่น meta.giftName, meta.giftCount, meta.amount, และ meta.currency คงรายละเอียดมีโครงสร้าง ส่วน gift อีเวนต์สงวนไว้สำหรับเฟรม/แถวของขวัญจริง การแสดงบริจาคยังควรอิง hasDonation.
donation SNSDiamond เฟรม websocket ให้กิจกรรมเพชร เฟรมเพชรโดยเฉพาะถือเป็นอีเวนต์บริจาค hasDonation จัดรูปแบบเป็นเพชรสำหรับการแปลง USD ร่วม และ meta.amount/meta.currency คงแบบแบนสำหรับระบบอัตโนมัติ
liked / reaction SNSLike ได้รับเฟรม websocket ไลก์ที่ระบุผู้กระทำใช้ค่าเดียวกัน liked คำศัพท์และการกำหนดเส้นทางเบื้องหลังส่วนกลางเดียวกับ TikTok ยอดไลก์รวม/นิรนามส่งเฉพาะเป้าหมายรีแอ็กชันเป็น reaction, โดยมีค่าแบบแบน meta.reactionType, meta.totalLikes, และ meta.subscriberLikes ความแตกต่างอยู่ที่ความหมายของอีเวนต์ ไม่ใช่การไม่เปิดเผยตัวตน: capturelikeevent ควบคุมเฉพาะรายตัว liked/like อีเวนต์
follower_update SNSVideo เมทาดาทา websocket ให้ยอดผู้ติดตาม meta เป็นจำนวนเต็มผู้ติดตาม ตรงกับแนวทางอีเวนต์ตัวนับร่วม
guest_update SNSVideoGuestBroadcast ได้รับเฟรมสร้าง/อัปเดต อีเวนต์ที่มีเฉพาะเมทาดาทาสำหรับสถานะแขกร่วม/ผู้ช่วยดำเนินรายการสด รูปแบบแบน meta คีย์ ได้แก่ status, position, totalGuests, isMuted, guestBroadcastId, videoViewerId, และ broadcastId.
viewer_update ตราผู้ชมในส่วนหัวที่มองเห็นเปลี่ยน หรือ SNSVideo เมทาดาทา websocket ให้ยอดผู้ชมเมื่อไม่มีตรา ยอดที่ไม่เปลี่ยนส่งซ้ำประมาณทุก 30 วินาทีขณะเปิดใช้ meta จำนวนเต็มของผู้ชม ส่งเฉพาะเมื่อเปิดการจับจำนวนผู้ชมหรือโหมด hype

Velora

การใช้งานในโค้ด: sources/velora.js และ sources/websocket/velora.js

  • โหมดมาตรฐานอ่าน DOM แชตที่มองเห็น ส่วนโหมด WebSocket ใช้ Velora Events API พร้อม OAuth
  • URL โหมดมาตรฐานที่รองรับ ได้แก่ https://velora.tv/*, https://velora.tv/dashboard/stream/popout?panels=chat%2Cactivity&channel=CHANNEL&layout=vertical, และ https://velora.tv/dashboard/stream/popout/CHANNEL/obs-chat.
  • การ์ดแบบ Volts และแต้มช่องส่งเป็นข้อมูลอีเวนต์เมื่อ DOM หรือ Events API ให้ข้อมูล
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message แถวแชต Velora ใหม่ปรากฏ หรือได้รับข้อความแชต Events API ข้อมูลแชตมาตรฐานที่คงตรา สีผู้เขียน ลิงก์ และอีโมต เมื่อไม่ใช่โหมดข้อความอย่างเดียว
volts การ์ด Velora Volts หรือ channel.volts ได้รับข้อมูล Events API hasDonation มียอด Volts ที่แสดง การจับ DOM รวม meta.source = "dom".
channel_points การ์ดแต้มช่อง/แลกรางวัล Velora หรือ channel.channel_points_redemption ได้รับข้อมูล Events API chatmessage มีข้อความแลกรางวัลหรือชื่อรางวัล; meta.rewardTitle ระบุรางวัลเมื่อมี
subscription แถวกิจกรรม Velora ที่มองเห็นระบุว่าผู้ใช้เป็นสมาชิก/ผู้สมัครสมาชิกช่องแล้ว membership มีป้ายสมาชิกที่มองเห็น
viewer_update จำนวนผู้ชมที่มองเห็นเปลี่ยนขณะเปิดการจับจำนวนผู้ชมหรือโหมด hype meta จำนวนเต็มของผู้ชม

Parti - การจับแชตโปรไฟล์ / ป๊อปเอาต์

การใช้งานในโค้ด: sources/parti.js

  • รองรับ URL โปรไฟล์ เช่น https://parti.com/USERNAME และ URL ป๊อปเอาต์ เช่น https://parti.com/popout-chat?id=USER_ID.
  • จำนวนผู้ชมใช้ endpoint heartbeat ของสตรีมสด Parti เมื่อเปิดการจับจำนวนผู้ชมหรือโหมด hype
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message แถวแชต Parti ที่มองเห็นปรากฏในสตรีมแชตโปรไฟล์หรือป๊อปเอาต์ ข้อมูลแชตมาตรฐาน; nameColor คงสีผู้เขียนที่แสดงของ Parti และ chatmessage คงเนื้อหาในบรรทัด เว้นแต่เปิดโหมดข้อความอย่างเดียว
donation แถวทิป Parti ที่มองเห็นระบุว่าผู้ใช้ให้ทิปจำนวนหนึ่ง hasDonation มียอดที่แสดง, meta.amount/meta.currency เติมค่าเมื่ออ่านได้, meta.amountText คงข้อความยอดดิบ และ donoValue ตั้งค่าสำหรับทิป USD
viewer_update heartbeat ของ Parti คืนจำนวนผู้ชมสด meta เป็นจำนวนเต็มผู้ชม หน้าใช้โทเค็น heartbeat หนึ่งตัวซ้ำต่อหน้าต่างแหล่งข้อมูลเพื่อไม่เพิ่มจำนวนเกินจริง

CHZZK - การจับแชตป๊อปเอาต์

การใช้งานในโค้ด: sources/chzzk.js

  • รองรับ https://chzzk.naver.com/live/*/chat และ https://chzzk.naver.com/iframe/live/*/chat.
  • จำนวนผู้ชมใช้ endpoint ตรวจสถานะสดของ CHZZK เมื่อเปิดการจับจำนวนผู้ชมหรือโหมด hype
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message แถวแชต CHZZK ที่มองเห็นปรากฏในสตรีมแชตป๊อปเอาต์ ข้อมูลแชตมาตรฐานพร้อม type: "chzzk", nameColor, URL ภาพตราใน chatbadges, และอีโมตที่แสดงผลใน chatmessage เว้นแต่เปิดโหมดข้อความอย่างเดียว
แชตพร้อม hasDonation แถวบริจาคชีส CHZZK ที่มองเห็นปรากฏในแชต hasDonation มียอดชีสที่แสดง แถวเหล่านี้ไม่ตั้ง data.event.
viewer_update การตรวจสถานะสดคืนจำนวนผู้ชม meta เป็นจำนวนเต็มผู้ชม

Rumble - การจับ DOM มาตรฐาน

การใช้งานในโค้ด: sources/rumble.js

  • ต้องใช้คุกกี้เซสชันที่ยืนยันตัวตนเพื่อให้ service.php API ผู้ชมตอบกลับ
  • แถว Rant ที่แสดงให้ค่า hasDonation; การ์ดเรดขาเข้าให้ event: "raid" แหล่ง DOM นี้ไม่ส่งฟีดอีเวนต์ผู้สมัครสมาชิก/ผู้ติดตามแบบสะพานเชื่อม API
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message แถวแชต Rumble ที่มองเห็นปรากฏในหน้าเว็บหรือแชตป๊อปอัป ข้อมูลแชตมาตรฐาน; chatmessage คง HTML ภาพอีโมต Rumble หลังหน้าแสดง เว้นแต่เปิดโหมดข้อความอย่างเดียว
viewer_update เรียกค่าของ Rumble video.watching-now บริการทุก 30 วินาที meta จำนวนเต็มของผู้ชม ใช้ credentials: 'include' เพื่อใช้คุกกี้เซสชันซ้ำ
แชตพร้อม hasDonationแถว Rant ที่มองเห็นมีราคาhasDonation คงราคาที่แสดง ไม่เพิ่มตัวระบุอีเวนต์บริจาค
raidการ์ดเรดขาเข้าปรากฏในแชตใช้ข้อความเรดที่มองเห็นและภาพการ์ดเพิ่มเติมใน contentimg.

Rumble - Websocket/URL ของ API

การใช้งานในโค้ด: sources/websocket/rumble.js

  • ต้องใช้ URL Live Stream API ของเจ้าของช่องจาก https://rumble.com/account/livestream-api เอกสาร Rumble ระบุว่า URL นี้มีคีย์ถ่ายทอดสด ไม่ต้องยืนยันตัวตนแยก และควรแชร์เฉพาะบุคคลภายนอกที่ไว้ใจ
  • ช่องทางรับส่งแบบอ่านอย่างเดียว เอกสาร Rumble Live Stream API สาธารณะไม่อธิบาย endpoint ส่งแชตอย่างเป็นทางการ แหล่งนี้จึงส่งต่อข้อความ/อีเวนต์เข้า Social Stream แต่ไม่ส่งแชตกลับ Rumble
  • livestreams[].chat มีค่าเฉพาะเมื่อสตรีมที่เลือกกำลังสด ใช้ ?streamId=... เพื่อเลือกตรึงสตรีมหนึ่งเมื่อ API ให้มากกว่าหนึ่ง ขณะนี้รหัสไม่ถูกต้องจะล้มเหลวแทนการสลับไปสตรีมอื่นเงียบ ๆ
  • หน้ายังหาค่าของ https://rumble.com/chat/popup/<livestreams[].id> เพื่อให้เปิดแชตป๊อปอัปปกติที่แทรกไว้ได้โดยตรง โดยไม่ต้องโหลดหน้าของเจ้าของช่องก่อน /live หน้า
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message รายการใหม่เข้ามาจากสตรีมแชต SSE ของ Rumble หลัง API อย่างเป็นทางการหาค่าของ livestreams[].id; ใช้ค่าสำรองเป็น livestreams[].chat.recent_messages. ข้อมูลแชตมาตรฐาน meta.source คือ rumble_sse เมื่อสตรีมแชต SSE ใช้ได้และมี URL อวาตาร์จาก users[].image.1; มิฉะนั้นใช้ค่าสำรองเป็น live_stream_api โดยไม่มีอวาตาร์ เมื่อแค็ตตาล็อกอีโมตป๊อปอัปใช้ได้ chatmessage แสดงอีโมต shortcode ของ Rumble เป็น HTML ภาพและ meta.plainText คงข้อความ shortcode ต้นฉบับ
donation รายการ rant ใหม่ปรากฏใน livestreams[].chat.recent_rants. hasDonation มียอดที่จัดรูปแบบเป็น USD; meta รวม amount_cents, amount_dollars, และ expiresOn.
new_follower รายการใหม่ปรากฏใน followers.recent_followers. อีเวนต์ระบบพร้อม chatname ตั้งเป็นชื่อผู้ติดตามและเวลาภายใต้ meta.followedOn.
new_subscriber รายการใหม่ปรากฏใน subscribers.recent_subscribers. membership ตั้งเป็น SUBSCRIBER; subtitle สะท้อนยอด USD ตามเอกสารเมื่อ Rumble ให้มา
subscription_gift รายการใหม่ปรากฏใน gifted_subs.recent_gifted_subs. chatname เป็นผู้ให้ของขวัญ, hasDonation กลายเป็น N Gifted, และ meta รวม totalGifted, remainingGifts, giftType, และ videoId.
follower_update ทุกครั้งที่ตัวนับผู้ติดตามที่เลือกเปลี่ยน meta จำนวนเต็มของผู้ติดตาม ค่าเริ่มต้นเป็น followers.num_followers; พร้อม ?followerMode=total, ใช้ followers.num_followers_total เมื่อ Rumble ให้มา
subscriber_update ทุกครั้งที่ subscribers.num_subscribers เปลี่ยน meta จำนวนเต็มของสมาชิก
stream_online / stream_offline เมื่อสตรีมสดที่เลือกสลับระหว่างสดกับออฟไลน์ meta รวมบางช่องสตรีมที่ผ่านการทำให้ปลอดภัย (id, title, createdOn, ป้ายหมวดหมู่ ไลก์/ดิสไลก์ และยอดผู้ชม) ค่าอ่อนไหว เช่น stream_key ตั้งใจไม่ส่งต่อ
viewer_update ทุกครั้งที่ livestreams[].watching_now เปลี่ยนสำหรับสตรีมที่เลือก meta จำนวนเต็มของผู้ชมพร้อมกัน ส่ง 0 เมื่อสตรีมที่เลือกออฟไลน์ เพื่อล้างตัวนับเก่าค้าง

ช่องทางนี้มีไว้สำหรับช่องที่คุณเป็นเจ้าของหรือจัดการ เนื่องจาก URL ของ API มีคีย์สตรีมสด อย่าเปิดเผยในโอเวอร์เลย์ ล็อก ภาพหน้าจอ หรือโปรไฟล์เบราว์เซอร์ที่แชร์ อวาตาร์แชตมาจากสตรีมแชต SSE ของ Rumble หลัง API อย่างเป็นทางการหาค่ารหัสสตรีมได้ ช่องทางนี้ไม่ได้ดึงหน้า Rumble เพื่อหาอวาตาร์

YouNow - การจับ DOM

การใช้งานในโค้ด: sources/younow.js

  • อ่าน DOM แชตสดที่แสดงและส่งข้อมูลแชตมาตรฐานพร้อม type: "younow".
  • บรรทัดกิจกรรมผู้ชม เช่น is watching, I became a fan!, และ invited N fans to this broadcast. ระบุด้วย event: true เพื่อให้ตัวกรองอีเวนต์กำหนดเส้นทางได้
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message แถวแชตใหม่ปรากฏในแชตผู้ชมสด ข้อมูลแชตมาตรฐาน; แถวกิจกรรมแฟน/ผู้ชมตั้งค่า event: true.
viewer_update จำนวนในแผงผู้ชมที่มองเห็นเปลี่ยนขณะ showviewercount/hypemode เปิดอยู่ meta จำนวนเต็มของผู้ชม ส่ง 0 เมื่อตัวนับหายไป

Favorited Studio - การจับ DOM

การใช้งานในโค้ด: sources/favorited.js

  • อ่าน DOM แชตสดที่แสดงและส่งข้อมูลแชตมาตรฐานพร้อม type: "favorited".
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message แถวแชตใหม่ปรากฏ ข้อมูลแชตมาตรฐาน
viewer_update จำนวนในแท็บผู้ชมสดเปลี่ยนขณะ showviewercount/hypemode เปิดอยู่ meta จำนวนเต็มของผู้ชมที่อ่านจาก content-live-viewers แท็บ

BEAM - การจับ DOM

การใช้งานในโค้ด: sources/beamstream.js

  • อ่าน DOM แชตสดที่แสดงและส่งข้อมูลแชตมาตรฐานพร้อม type: "beamstream".
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message แถวแชตใหม่ปรากฏ ข้อมูลแชตมาตรฐานพร้อมข้อความธรรมดา chatname, URL อวาตาร์ใน chatimg, และ URL ภาพหรือออบเจ็กต์ตรา SVG ใน chatbadges ช่องที่ซ่อนในหน้าจับข้อมูล Beam จะคงว่าง ลิงก์โปรไฟล์ Beam ดั้งเดิมไม่ถือเป็นแหล่งส่งต่อภายนอก contentimg อาจมีไฟล์แนบ video/webm ในบรรทัดเมื่อมีให้
viewer_update องค์ประกอบตัวนับผู้ชมเปลี่ยนขณะ showviewercount/hypemode เปิดอยู่ meta จำนวนเต็มของผู้ชม ส่งเฉพาะเมื่อหน้าแชตมีตัวนับผู้ชม

Castyr - การจับ DOM

การใช้งานในโค้ด: sources/castyr.js

  • อ่านแถวแชตใหม่ที่แสดงจาก https://castyr.live/homebeta/popout-chat/* และส่งข้อมูลแชตมาตรฐานพร้อม type: "castyr".
  • ข้ามประวัติแชตเดิมเมื่อเชื่อมแหล่งข้อมูล
อีเวนต์ เมื่อใดที่ทำงาน หมายเหตุข้อมูลที่รับส่ง
message รายการใหม่ .chat-message แถวปรากฏ ข้อมูลแชตมาตรฐานพร้อมชื่อผู้ส่ง เนื้อหาข้อความที่แสดง และสีชื่อเมื่อมีให้
viewer_update จำนวนแชตที่ใช้งานซึ่งมองเห็นเปลี่ยนขณะ showviewercount/hypemode เปิดอยู่ meta เป็นจำนวนเต็มที่อ่านจากองค์ประกอบแชตที่ใช้งานซึ่งมี title ของ Castyr

SOOP - การจับ DOM ของตัวเล่น

การใช้งานในโค้ด: sources/sooplive.js รองรับรูปแบบรวม play.sooplive.com ตัวเล่นและรูปแบบเดิม play.sooplive.co.kr URL โดยยังรู้จักเลย์เอาต์แชตส่วนกลางแบบเดิมเมื่อมีการให้บริการ

แชตสาธารณะส่ง type/platform: "sooplive", ข้อความธรรมดา chatname/userid, nameColor, และค่าที่ผ่านการทำให้ปลอดภัย chatmessage ไม่รวมแถวเดิม รหัสข้อความซ้ำ สำเนาแปล และข้อความกระซิบส่วนตัว อีโมตกลายเป็นภาพที่ปลอดภัยหรือข้อความ alt ในโหมดข้อความอย่างเดียว

พร้อม showviewercount หรือ hypemode เปิดอยู่, viewer_update มีค่าจำนวนเต็ม meta จากค่าของตัวเล่น #nAllViewer หน้าต่างแชตอย่างเดียวอาจไม่แสดงจำนวนนี้ SSApp ใช้ตัวเล่นเต็มเมื่อเปิดป๊อปอัปแยก เพราะป๊อปอัป SOOP ปัจจุบันพึ่งหน้าที่เปิดมัน

Gosh - การจับแชตช่อง

การใช้งานในโค้ด: sources/gosh.js เปิด https://gosh.com/USERNAME โดยให้แชตมองเห็น หรือวาง URL นั้นใน Add other source ของ SSApp ไม่ต้องใช้แชตป๊อปเอาต์

แถวแชตใหม่ส่ง type/platform: "gosh", ข้อความธรรมดา chatname, nameColor, และค่าที่ผ่านการทำให้ปลอดภัย chatmessage ภาพและ GIF ในบรรทัดคง URL แบบ HTTP(S) ที่ปลอดภัย เมื่อใช้ textonlymode, ภาพกลายเป็นข้อความ alt หรือ [image] เมื่อไม่มีข้อความ alt อวาตาร์ ตรา การบริจาค และสมาชิกคงว่างเมื่อไม่มีในแถวที่จับ

เลื่อนแชตแบบแสดงเฉพาะส่วนไปที่ข้อความล่าสุด ไม่รวมประวัติเดิม แถวที่แสดงซ้ำ และประกาศระบบที่ไม่มีผู้เขียน ดัชนีการแสดงอยู่ภายในและไม่ส่งเป็นรหัสข้อความดั้งเดิม ไม่มีการอนุมานอีเวนต์ติดตาม บริจาค จำนวนผู้ชม หรือดูแลแชต

Livacha - การจับห้องแชต

การใช้งานในโค้ด: sources/livacha.js เปิด https://livacha.com/chat/ROOM โดยให้แชตมองเห็น หรือวาง URL ห้องใน Add other source ของ SSApp

แถวแชตใหม่ส่ง type/platform: "livacha", ข้อความธรรมดา chatname, chatimg, nameColor, และค่าที่ผ่านการทำให้ปลอดภัย chatmessage URL อวาตาร์และภาพในบรรทัดแบบสัมพัทธ์จะกลายเป็น URL HTTP(S) แบบเต็ม ย่อหน้า การขึ้นบรรทัด และรายการจะรวมเป็นข้อความแชตเดียว เมื่อใช้ textonlymode, ภาพกลายเป็นข้อความ alt หรือ [image].

ใช้รหัสข้อความภายในเพื่อหลีกเลี่ยงจับการแก้ไขและแถวที่ถูกสร้างใหม่ซ้ำ ข้ามประวัติเริ่มต้นและข้อความเก่าที่แทรกด้านบน เวลาและเมนูรีแอ็กชันอยู่นอกเนื้อหาที่จับ ไม่มีการอนุมานอีเวนต์บริจาค สมาชิก ดูแลแชต หรือจำนวนผู้ชม

Stream.space - การจับ DOM รุ่นทดลอง

การใช้งานในโค้ด: sources/streamspace.js จับคู่เฉพาะ https://beta.stream.space/chat-popup.php?channel=USERNAME และค่าที่เทียบเท่า https://stream.space ป๊อปอัป

แถวแชตใหม่ที่แสดงส่ง type: "streamspace", platform: "streamspace", ข้อความธรรมดา chatname/userid, chatmessage, อวาตาร์ chatimg, ระดับแบบภาพ chatbadges, และ nameColor อีโมตในบรรทัดจะสร้างใหม่เป็นภาพที่ปลอดภัย หรือข้อความ alt เมื่อ textonlymode เปิดอยู่ ไม่รวมประวัติเดิม ประกาศต้อนรับ ตัวอย่างตอบกลับ และรายการปักหมุดซ้ำ

viewer_update มีค่าจำนวนเต็ม meta อ่านจาก #popupViewersNum เมื่อ showviewercount หรือ hypemode เปิดอยู่ ไม่มีการอนุมานอีเวนต์บริจาค สมาชิก หรือดูแลแชต

รุ่นทดลอง: ป๊อปอัปเบตายังค้างที่ Loading ระหว่างตรวจสอบ SSApp โหลดป๊อปอัปและจับอัปเดตผู้ชมได้ แต่ยังไม่ยืนยันการส่งแชตสดและป๊อปอัปใช้งานจริง SSN จับข้อความที่เว็บไซต์ไม่แสดงไม่ได้

w.tv และ Prime - การจับ DOM

การใช้งานในโค้ด: sources/wtv.js บน https://w.tv/USERNAME/chat และ sources/prime.js บน https://prime.gs/USERNAME?chat_popout=1.

แถวแชตใหม่ใช้ type/platform ของ wtv หรือ prime, ข้อความธรรมดา chatname, nameColor, และค่าที่ผ่านการทำให้ปลอดภัย chatmessage อีโมตในบรรทัดกลายเป็นภาพที่ปลอดภัยหรือข้อความ alt ในโหมดข้อความอย่างเดียว Prime ยังรวมค่าของแถว userid และรองรับทั้งลิงก์โปรไฟล์เมื่อเข้าสู่ระบบและป้ายชื่อผู้ใช้เมื่อออกจากระบบ อวาตาร์และตราเว้นว่างเมื่อไม่มีในโครงสร้างแถวที่ตรวจยืนยันแล้ว

ไม่รวมประวัติเริ่มต้น การ์ดปักหมุด และตัวอย่างตอบกลับ w.tv ใช้แชตแบบแสดงเฉพาะส่วน ให้เลื่อนไปข้อความล่าสุดเพื่อจับข้อมูล test ID ใน DOM เป็นดัชนีการแสดง ไม่ใช่รหัสข้อความดั้งเดิม Prime ข้ามประวัติเก่าที่โหลดเหนือข้อความเริ่มต้นและตัวแทนผู้ใช้ที่ถูกละเว้น

ป๊อปอัปทั้งสองไม่มีจำนวนผู้ชมสตรีมที่ยืนยันได้ อะแดปเตอร์เหล่านี้จึงไม่ส่งอัปเดตผู้ชมหรืออนุมานอีเวนต์บริจาค สมัครสมาชิก หรือดูแลแชต

ความสอดคล้องของอีเวนต์ข้ามแพลตฟอร์ม

ใช้ตารางนี้ทำความเข้าใจการจับคู่แนวคิดคล้ายกันข้ามแพลตฟอร์ม หากทำได้ แหล่งใหม่ควรใช้ชื่ออีเวนต์ร่วมในคอลัมน์แรก

แนวคิด YouTube WS Twitch WS Kick WS
สมาชิก/ผู้สมัครใหม่ sponsorship new_subscriber new_subscriber
ต่ออายุ/สมัครซ้ำ resub resub resub
สมาชิกแบบของขวัญ giftpurchase subscription_gift subscription_gift
ได้รับของขวัญ giftredemption - -
เหตุการณ์สำคัญ membermilestone - -
การบริจาค/ทิป superchat, supersticker, jeweldonation พร้อม hasDonation cheer (บิต) donation
ผู้ติดตามใหม่ new_follower (ตรวจเป็นระยะ)* new_follower new_follower
จำนวนผู้ชม viewer_update viewer_update viewer_update
จำนวนผู้ติดตาม - follower_update follower_update
จำนวนสมาชิก subscriber_update subscriber_update -
สถานะสตรีม live_chat_ended stream_online/stream_offline stream_online/stream_offline
เรด - raid -
การแลกรางวัล - reward reward

หมายเหตุความสอดคล้อง

  • YouTube ใช้ sponsorship สำหรับสมาชิกใหม่ ส่วน Twitch และ Kick ใช้ new_subscriber พิจารณาตรวจทั้งสองค่าเมื่อสร้างตัวเรียกข้ามแพลตฟอร์ม
  • resub สอดคล้องกัน บนทั้งสามแพลตฟอร์มสำหรับการต่ออายุ
  • อีเวนต์ของขวัญแตกต่างกัน: YouTube ใช้ giftpurchase/giftredemption, ส่วน Twitch และ Kick ใช้ subscription_gift.
  • การบริจาคแตกต่างตามแพลตฟอร์ม: YouTube ใช้ชื่ออีเวนต์ชำระเงินที่เฉพาะเจาะจง เช่น superchat, supersticker, และ jeweldonation พร้อม hasDonation; Twitch มีบิต (cheer); Kick มีทิป (donation).
  • new_follower ขณะนี้สอดคล้องกัน บนทั้งสามแพลตฟอร์ม แต่ YouTube ตรวจผู้ติดตามล่าสุดเป็นระยะและผลอาจล่าช้าหรือไม่ครบ
  • ไลก์และรีแอ็กชันมีข้อกำหนดแยกกัน: รายตัว liked/like อีเวนต์ถึง Reactions Overlay เว้นแต่ถูกกรองส่วนกลาง และเข้าสู่เส้นทางหลักเฉพาะเมื่อ capturelikeevent เปิดอยู่ แบบภาพหรือค่าดั้งเดิมของแพลตฟอร์ม reaction อีเวนต์คงเส้นทางที่ผู้สร้างกำหนด ค่ารวม likes_update ตัวนับถูกควบคุมแยกด้วย captureliketotals.

ขอบเขตการรองรับและข้อจำกัดความเข้ากันได้

เอกสารนี้อธิบายข้อมูลที่ใช้งานจริง ไม่ได้รับประกันว่าทุกแพลตฟอร์มส่งทุกอีเวนต์ ค่าว่าง hasDonation การกำหนดค่าในแหล่งข้อมูลไม่ได้ยืนยันว่ารองรับการบริจาค การมองเห็น DOM สิทธิ์บัญชี สวิตช์จับข้อมูล และความพร้อม API ยังเป็นตัวกำหนดว่าจะได้รับอะไร การส่งต่อการลบเฉพาะแต่ละแหล่ง อย่าสมมติว่าซิงก์การดูแลแชตได้ทุกที่

ความไม่ตรงกันและช่องว่างที่ติดตาม

คู่ / ส่วน ความไม่ตรงกัน / ช่องว่างที่พบ ผลกระทบ
Twitch: แบบมาตรฐานกับ Websocket ร่วมกัน: reward, subscription_gift, viewer_update, hype_train, และค่าที่เลือกเปิดใช้ watch_streak เฉพาะ Standard: giftpurchase, knock, community_highlight เฉพาะ Websocket: new_subscriber, resub, cheer, powerup, raid, new_follower, follower_update, subscriber_update. channel_points ขณะนี้เป็นชื่อเรียกเดิมที่เลิกแนะนำสำหรับการแลกรางวัล Twitch การเชื่อมต่อใหม่ควรอิง reward.
Kick: แบบมาตรฐานกับ Websocket แบบมาตรฐานส่งตัวระบุขนาดเล็ก (gift, reward, ค่าบูลีน true, viewer_update) Websocket เพิ่มอีเวนต์อย่างเป็นทางการเกี่ยวกับติดตาม สมัครสมาชิก ของขวัญ แลกรางวัล KICKs ดูแลแชต และสถานะถ่ายทอดสด และยังจัดการความเข้ากันได้กับรูปแบบเดิม raid ข้อมูล แต่ขณะนี้ Kick ไม่มีการสมัคร raid/host อย่างเป็นทางการ โหมด Websocket ให้ข้อมูลมากกว่า ควรตรวจระบบอัตโนมัติที่อิงชื่ออีเวนต์เฉพาะโหมดมาตรฐานเมื่อเปลี่ยนโหมด อย่ากำหนดให้ต้องมีอีเวนต์เรด Kick
YouTube: แบบมาตรฐานกับ Websocket ร่วมกัน: superchat, supersticker, jeweldonation, sponsorship, resub, giftpurchase, giftredemption, viewer_update เฉพาะ Standard: thankyou, redirect เฉพาะ Websocket: membermilestone, new_follower, subscriber_update, view_update, likes_update (เลือกเปิดใช้) ชื่อสมาชิก/อีเวนต์หลักสอดคล้องกันทั้งสองแบบ Super Chat, Super Sticker และ Jewels ใช้ hasDonation, ส่วนการซื้อ/แลกของขวัญสมาชิกไม่ใช้
ทุกส่วนแสดงผล แหล่งข้อมูลจำนวนมากเติมค่า hasDonation โดยไม่ตั้ง data.event. ถูกต้องแล้ว การแสดงการบริจาคควรอิง hasDonation, พร้อม data.event สงวนไว้สำหรับความหมายระบบ/อีเวนต์

ชื่อเรียกแทนและชื่อเดิมเฉพาะแหล่งข้อมูล

การจับคู่เหล่านี้เฉพาะแหล่ง/บริบทที่ระบุ ไม่ใช่การแทนที่ทั่วระบบ การรองรับชื่อเรียกแทนของผู้รับข้อมูลต่างกันตามหน้า แหล่ง TikTok DOM และ TikFinity ปัจจุบันยังส่ง followed; Velora ใช้ subscription และ channel_points, และ Streamlabs ใช้ subscription ยอมรับข้อกำหนดของแหล่งข้อมูลปัจจุบันและชื่อเรียกเดิมที่เกี่ยวข้อง แทนการเปลี่ยนชื่อทุกอีเวนต์ที่ตรงกัน

ชื่อเรียกแทน / ชื่อเดิม ค่ามาตรฐานที่ใช้แทน บริบท
subscriptionnew_subscriberสมาชิกใหม่ Twitch/Kick
subgiftsubscription_giftสมาชิกแบบของขวัญ Twitch
membershipsponsorshipสมาชิกใหม่ YouTube (ทั่วไป)
new_membersponsorshipสมาชิกใหม่ YouTube
new_membershipsponsorshipสมาชิกใหม่ YouTube
newmembersponsorshipสมาชิกใหม่ YouTube
new-membershipsponsorshipตัวดึง DOM ของ YouTube (รูปแบบมีขีดกลาง)
upgraded_membershipresubอัปเกรดระดับ YouTube
upgraded-membershipresubตัวดึง DOM ของ YouTube (รูปแบบมีขีดกลาง)
membership_upgraderesubอัปเกรดระดับ YouTube
membership_milestonemembermilestoneแชตฉลองเหตุการณ์สำคัญ YouTube
member_milestonemembermilestoneแชตฉลองเหตุการณ์สำคัญ YouTube (รูปแบบขีดล่าง)
gift_membershipgiftpurchaseชุดของขวัญ YouTube
membership_giftgiftpurchaseชุดของขวัญ YouTube
giftmembershipsgiftpurchaseชุดของขวัญ YouTube (รูปแบบพหูพจน์)
gifted_membershipgiftredemptionได้รับของขวัญ YouTube
gifted_membershipsgiftpurchaseชุดของขวัญ YouTube (รูปแบบพหูพจน์)
community_giftgiftpurchaseชุดของขวัญชุมชน
channel_pointsrewardการแลกรางวัล Twitch websocket (ชื่อเรียกเดิม)
followednew_followerเอาต์พุต TikTok DOM/TikFinity ปัจจุบัน ให้รับทั้งสองชื่อเมื่อรวมโหมดจับข้อมูล TikTok

การใช้เอกสารนี้

  • เมื่อเพิ่มอีเวนต์ใหม่ ให้ใช้คำศัพท์ที่มีอยู่ (subscription_gift, viewer_update, ฯลฯ) เมื่อทำได้ หากจำเป็นต้องแตกต่าง ให้บันทึกไว้ที่นี่พร้อมเหตุผล
  • คงค่า data.meta ให้คาดเดาได้: ควรใช้คีย์แบบแบน อย่ายัดข้อมูลหลายชนิดรวมในสตริง และระบุหน่วยเสมอ (currency, bits, duration).
  • อัปเดตหน้านี้พร้อมการเปลี่ยนข้อมูลที่รับส่ง อัปเดตคำแนะนำเอเจนต์เฉพาะเมื่อกฎพัฒนาร่วมเปลี่ยน
  • ตรวจการเปลี่ยนข้อมูลที่รับส่งทั้งกับแหล่งที่ส่ง และโอเวอร์เลย์หรือตัวเรียก Event Flow ที่รับ
  • การจับข้อมูลขึ้นอยู่กับการรองรับและการตั้งค่าของแหล่ง หากต้องการซ่อนแถวที่ระบุอีเวนต์ในแผงด็อกหรือโอเวอร์เลย์ Featured ให้เพิ่ม &hideevents หรือ &hideallevents หากต้องการซ่อนอีเวนต์ที่เลือก ใช้ &filterevents=subscription_gift,new_follower,gifted.
  • สำหรับ YouTube, Twitch และ Kick ให้เปิด โหมด WebSocket เพื่อการรองรับอีเวนต์เฉพาะแพลตฟอร์มที่กว้างที่สุด การจับของขวัญ/บริจาค YouTube (รวมของขวัญและ super chats) ใช้ได้ทั้งโหมด Standard และ WebSocket โดย WebSocket เพิ่มประเภทอีเวนต์อื่น การรองรับจริงยังต่างตามแพลตฟอร์ม บทบาทบัญชี และขอบเขตสิทธิ์ที่อนุญาต

กลับด้านบน

โอเวอร์เลย์สร้างรายได้

ทิป NinjaBacker ใช้ platform: "ninjabacker", type: "ninjabacker", chatname, ข้อความธรรมดา chatmessage, textonly: true, ค่าที่มีคำนำหน้าระบุแหล่งข้อมูล id, ค่าที่จัดรูปแบบแล้ว hasDonation, และค่าตัวเลข donoValue เป็นแถวแบบบริจาคปกติที่ไม่มี event ค่าที่ใช้แทน meta.ninjabacker มีค่า ISO currency และค่าในหน่วยหลัก amount ทิปนิรนามใช้ชื่อแสดง Anonymous แหล่งข้อมูลใช้ SSE สด (ไม่เล่นย้อนหลัง) หรือระบบรับ signed webhook บน SSN API ที่เลือกเปิดได้ (เข้าคิวส่งได้นานสูงสุดเจ็ดวัน) การส่งที่เชื่อถือได้ใช้ค่าคงที่ ninjabacker:delivery:DELIVERY_ID id ทั้งสองโหมดไม่รับรายการย้อนกลับจากคืนเงิน/ข้อพิพาท ข้อมูลรับรองตัวรับและ signing secret ไม่เข้าสู่ข้อมูลอีเวนต์ ค่า callbackId ที่ผู้เรียกควบคุมไม่ใช่ตัวตนการชำระเงินและไม่ส่งต่อ ทิปทดสอบจากแดชบอร์ดไม่รวมในแถวบริจาค โดยส่ง event: "monetization_test" พร้อม meta.ninjabackerTest ที่มี id และ at (มิลลิวินาที Unix) สำหรับการแจ้งเตือนตัวอย่างโดยเฉพาะเท่านั้น

event: "monetization_update" เป็นภาพข้อมูลที่มีเฉพาะเมทาดาทาจาก type/platform: "socialstream". meta.monetization.wishlist มี enabled, qr, position, rank, total, url สาธารณะ และ item ปัจจุบัน (name, amount, currency, image, url สาธารณะ) หรือ null meta.monetization.ninja มี enabled, qr, position, username และ url ให้ทิปสาธารณะ ไม่รวม Tip ID ส่วนตัวเด็ดขาด meta.monetization.ebay มี enabled, qr, position, display (cycle/cheapest/first), seconds, การตั้งค่าประกาศที่เลือกเปิดได้ และ items สาธารณะ แต่ละรายการมี id, name, amount, currency, image, url, auction, startingBid, endsAt, available, bought และ updatedAt เวลาเป็นมิลลิวินาที Unix ไม่รวมข้อมูลรับรองผู้ขายหรือตัวตนผู้ซื้อ

การซื้อจากรายการอยากได้ที่ผู้ดำเนินรายการยืนยันยังรวม meta.wishlistPurchase พร้อม id, name, supporter หากมี และ at (มิลลิวินาที Unix) เป็นการยืนยันของผู้ดำเนินรายการ ไม่ใช่การแจ้งเตือนชำระเงิน Amazon และไม่นับเป็นบริจาคเงิน โอเวอร์เลย์ควรตัดซ้ำตาม id และข้ามประกาศซื้อเก่า

คำสั่งซื้อ Shopify ที่ชำระแล้ว

ตัวรับ Shopify ที่ลงลายเซ็นซึ่งเลือกเปิดใช้ได้ส่ง platform/type: "shopify" และ event: "purchase" เฉพาะสำหรับ orders/paid พร้อม financial_status: "paid", ยอดรวมบวก, test: false, ไม่มีการยกเลิก และมีเวลาการอัปเดตล่าสุดจากเนื้อหาที่ลงลายเซ็น การแจ้งเตือนทดสอบ ยังไม่ชำระ เก่า ยกเลิก และคืนเงินไม่ส่งการกระทำซื้อ ไม่มีการอนุมานเจตนาให้ของขวัญ

chatname เป็น Anonymous ไม่รวมช่องลูกค้า หมายเหตุส่วนตัว และ URL คำสั่งซื้อ chatmessage เป็นข้อความธรรมดาพร้อม textonly: true; subtitle เก็บชื่อสินค้าสาธารณะสูงสุดสามชื่อ meta.commerce มี orderTotal และ currency ในสกุลเงินร้านค้า พร้อม quantity เมื่อทราบจำนวนที่ถูกต้องครบถ้วน ผู้รับและจุดประสงค์สินค้าจริง/ดิจิทัลยังไม่ตั้ง ไม่มี hasDonation หรือ donoValue ถูกตั้งค่า id เป็นแฮชคงที่แบบทึบ จำกัดขอบเขตตามร้าน/คำสั่งซื้อพร้อมคำนำหน้า Shopify ไม่ใช่รหัสคำสั่งซื้อดิบ

การซื้อใช้เส้นทางกิจกรรม หมวด Purchase ใน multi-alerts และ Event Flow ที่มีอยู่ การโปรโมตสินค้าใช้ตัวเดิม meta.monetization.commerce แค็ตตาล็อก การนำเข้าสินค้าหรือตั้งป้ายโปรโมตเป็น Gift ไม่สร้างอีเวนต์ซื้อหรือของขวัญ การตั้งค่า Shopify และข้อจำกัดการส่ง.

ของขวัญและการค้า

ใช้ event: "gift" สำหรับของขวัญ, giftcontribution สำหรับการจ่ายเงินสมทบของขวัญ, giftfunded สำหรับการระดมทุนสำเร็จ และ purchase สำหรับการขายสินค้า ชื่อเหล่านี้ไม่ขึ้นกับผู้ให้บริการหรือเป็นสินค้าจริง/ดิจิทัล สงวนชื่อเดิม giftpurchase อีเวนต์สำหรับสมาชิกแบบของขวัญ Throne เคยใช้ชื่อนั้นผิดและขณะนี้ส่ง gift แหล่งสร้างอีเวนต์สมาชิกเดิมไม่เปลี่ยน ตัวกรองชื่ออีเวนต์ Throne กำหนดเองควรเปลี่ยนเป็น gift; ไม่ต้องเปลี่ยนตัวกรองการบริจาค

hasDonation ยังเป็นสัญญาณเพื่อความเข้ากันได้สำหรับการสนับสนุนที่ชำระเงิน พร้อม donoValue ที่เก็บมูลค่า USD ที่ให้มาหรือประเมิน ของขวัญและการร่วมสมทบคงช่องเหล่านั้นไว้ การระดมทุนสำเร็จไม่ใส่ทั้งคู่เพื่อไม่ให้นับเงินสมทบซ้ำ การขายสินค้าปกติไม่ใส่เป็นค่าเริ่มต้น โดยคงข้อกำหนด eBay อย่าอนุมานเจตนาให้ของขวัญจากร้านค้า URL รายการอยากได้ หรือสินค้าจริง การซื้อให้ผู้ซื้อเองหรือผู้รับอื่นยังเป็นการขาย เว้นแต่แหล่งระบุชัดว่าให้ของขวัญครีเอเตอร์

ค่าร่วมเพิ่มเติม meta.commerce ช่องข้อมูลคือ recipient (creator, buyer, other), itemType (physical, digital, service), quantity (จำนวนสินค้าบวก), currency (สกุลเงิน ISO), goalAmount (เป้าหมายระดมทุนในหน่วยหลัก ไม่ใช่รายได้ใหม่) และ orderTotal (ยอดรวมคำสั่งซื้อที่ชำระแล้วซึ่งทราบค่า ในหน่วยหลักของสกุลเงิน; เป็นการค้า ไม่ใช่รายได้บริจาค) ละรายละเอียดที่ไม่ทราบ เก็บชื่อสินค้าไว้ใน subtitle, ภาพใน contentimg, และข้อความผู้สนับสนุนใน chatmessage เมทาดาทาผู้ให้บริการเดิมยังใช้ได้ Throne ให้ผู้รับและสกุลเงิน พร้อม goalAmount เมื่อสำเร็จ ส่วน eBay ให้จำนวน ทั้งคู่ไม่เดาประเภทสินค้าหรือเปิดเผยข้อมูลส่วนตัวผู้รับ

ฟีดกิจกรรมแสดงอีเวนต์เหล่านี้แม้ไม่มีข้อความผู้สนับสนุน Multi-alerts ใช้รูปแบบบริจาคสำหรับของขวัญและการร่วมสมทบ รวมการแจ้งเตือน Gift Fully Funded แยกที่ไม่มีมูลค่าเงิน การซื้อมีหมวด Purchase แยก เปิดเป็นค่าเริ่มต้น พร้อม purchasestyle, purchasesound, purchaseaccent, และ disablepurchases ตัวควบคุม URL การแจ้งเตือนซื้อไม่เปลี่ยนยอดบริจาค

Event Flow มีชื่ออีเวนต์เหล่านี้ในตัวเรียก Event Type และ Other Event ตัวเรียก Donation ยังคงตรวจ hasDonation; ตัวเรียก Gift Sub คงความหมายสมาชิก Compare Property รับเส้นทางซ้อน เช่น meta.commerce.recipient เทมเพลตการกระทำรับ {meta.commerce.quantity} และ {meta.commerce.currency}, ควบคู่กับค่าที่มีอยู่ {donation}, {subtitle}, และ {meta} เส้นทางซ้อนแยกตัวพิมพ์ใหญ่เล็ก ค่าที่ขาดแสดงว่าง และห้ามไล่ผ่าน prototype

Webhook ร้านค้าครีเอเตอร์และโอเวอร์เลย์โปรโมต

การชำระ Donation สาธารณะของ Ko-fi คง hasDonation และได้รับค่า USD donoValue การชำระค่าสมัครสมาชิกใช้ new_subscriber หรือ resub, โดยระบุระดับใน membership Shop Order และ Commission ใช้ purchase โดยไม่มีค่าบริจาค ยังคงไม่รวมอีเวนต์ Ko-fi ส่วนตัว JSON ที่เข้ารหัสฟอร์มถอดรหัสหนึ่งครั้ง ชื่อและข้อความเป็นข้อความธรรมดา

Buy Me a Coffee donation.created คงการสนับสนุนทางเงิน; extra_purchase.created และ commission_order.created กลายเป็น purchase. wishlist_payment.created กลายเป็น giftcontribution โดยใช้เฉพาะยอดชำระนั้น; meta.commerce.completed บันทึกแฟล็กสำเร็จของผู้ให้บริการโดยไม่ส่งแถวเงินอีกครั้ง membership.started กลายเป็น new_subscriber พร้อมระดับใน membership, เลิกใช้ผิดวัตถุประสงค์สำหรับ hasDonation สำหรับชื่อระดับ ยอดตอนเริ่มสมัครสมาชิกไม่ถือเป็นการเรียกเก็บที่ชำระแล้วแยกอีกครั้ง อีเวนต์ทดสอบ คืนเงิน ล้มเหลว และการอัปเดต/วงจรสถานะที่ไม่รองรับไม่สร้างการแจ้งเตือนชำระเงิน ไม่รวมหมายเหตุผู้สนับสนุนที่ซ่อนไว้

Fourthwall รองรับ ORDER_PLACED (purchase), GIFT_PURCHASE (gift, recipient other), DONATION (แถวบริจาคปกติ) และ SUBSCRIPTION_PURCHASED (new_subscriber) ยอดคำสั่งซื้อเดิมยังคง hasDonation เพื่อความเข้ากันได้ย้อนหลัง โดยระบุว่า meta.commerce.legacyDonationValue: true; เป็นข้อยกเว้นชัดเจนจากค่าเริ่มต้นใหม่สำหรับการขายสินค้า คำสั่งซื้อที่ใช้บัตรของขวัญส่งการแจ้งเตือนซื้อโดยไม่มีค่าบริจาค เพราะอนุมานยอดเรียกเก็บใหม่จากยอดคำสั่งซื้อไม่ได้อย่างน่าเชื่อถือ และนับการซื้อของขวัญไปแล้ว ไม่ใช้ชื่อเรียกเก็บเงินและอีเมลเป็นตัวตนสาธารณะ อีเวนต์ทดสอบจากแดชบอร์ดและการอัปเดตคำสั่งซื้อไม่สร้างการแจ้งเตือนชำระเงิน

อะแดปเตอร์เหล่านี้คงการส่งต่อ การกระทำบอต Event Flow และการเลือกเส้นทางปลายทางเดิม พร้อม meta.webhookId การตัดรายการซ้ำ โดยให้ชื่อสาธารณะ ข้อความธรรมดา และชื่อสินค้าที่ทราบใน subtitle, และค่า ISO meta.commerce.currency ควบคู่กับค่าบริจาคแบบตัวเลขเมื่อเกี่ยวข้อง ไม่เพิ่มระบบบัญชีคืนเงินหรือการยืนยันตัวตนตัวรับใหม่ ให้ใช้เส้นทาง webhook เดิมที่ตั้งค่าของผู้ให้บริการ

meta.monetization.commerce ใน monetization_update มี enabled, qr, position, display (first/cycle), seconds และอาร์เรย์ items สาธารณะ แต่ละรายการมี name, url, image, amount หากทราบ (null เมื่อไม่ทราบ), currency และ purpose (shop/gift/support/membership) เป็นรายละเอียดโปรโมตที่ผู้ดำเนินรายการป้อน ไม่ใช่หลักฐานชำระเงิน การเพิ่มหรือแก้ไขรายการไม่ส่งอีเวนต์บริจาคหรือซื้อ โอเวอร์เลย์ทั่วไปใช้ mode=commerce; view=both|showcase|card|alerts แยกการโปรโมตจากกิจกรรม พารามิเตอร์ URL เพิ่มเติม style, scale, cardevery, cardfor และ onlytype ควบคุมการแสดงผล โหมดผู้ให้บริการเดิมยังรับตัวควบคุม view และกำหนดเวลา ดู คู่มือตั้งค่า.

อีเวนต์ของขวัญ Throne

การเชื่อมต่อ Monetization ที่เลือกเปิดใช้ส่งต่ออีเวนต์ Throne ที่ลงลายเซ็นพร้อม platform และ type ตั้งเป็น throne ทั้งสามใช้ค่าการส่งที่คงที่ id, ข้อความธรรมดา chatname, chatmessage พร้อม textonly: true, ชื่อสินค้าใน subtitle, และภาพย่อ HTTPS เพิ่มเติมใน contentimg.

อีเวนต์ความหมายยอดบริจาค / อันดับ
giftของขวัญที่ซื้อแล้วhasDonation และค่า USD donoValue; อันดับของขวัญ +1
giftcontributionการร่วมสมทบสำหรับของขวัญเฉพาะยอดร่วมสนับสนุน ไม่เพิ่มอันดับ
giftfundedของขวัญระดมทุนสำเร็จไม่มี hasDonation หรือ donoValue, ป้องกันการนับการสนับสนุนก่อนหน้าซ้ำ; อันดับของขวัญ +1

meta.throne มี itemName, creator (ชื่อผู้ใช้สาธารณะ), completed, currency และค่าในหน่วยหลัก amount สำหรับ giftfunded, ยอดเงินอธิบายเป้าหมาย ไม่ใช่รายได้ใหม่ ผู้ให้ของขวัญนิรนามยังคงเป็น Anonymous; ของขวัญชุมชนที่สำเร็จใช้ Community ไม่ส่งต่อช่องข้อมูลชำระเงินและจัดส่งส่วนตัว

monetization_update ภาพข้อมูลมีเพิ่มด้วย meta.monetization.throne: enabled, username, url, qr, position, rank, และ gifts ภาพข้อมูลเหล่านี้ไม่มี URL ของ webhook หรือข้อมูลรับรองการรับฟัง

คำสั่งเสียงผู้ดำเนินรายการ (พรีวิวเดสก์ท็อป)

ส่วน Event Flow เมื่อฉันพูดว่า... ตัวเรียกรับคำสั่งไมโครโฟนในเครื่องที่เชื่อถือได้จาก SSApp บริบทการกระทำภายในใช้ chatname: "Host", type: "hostvoice", วลีที่รู้จำได้ใน chatmessage, และ textonly: true ไม่ใช่อีเวนต์แพลตฟอร์มขาเข้าหรือช่องทางรับส่งแชตใหม่ การส่งช่องเหล่านี้ผ่านแชตไม่เรียกตัวเรียกเสียง

ต้องใช้แอปเดสก์ท็อปที่อัปเดต เริ่มไมโครโฟนอย่างชัดเจน และเปิดการกระทำหลังโหมด Test ดู การตั้งค่าพรีวิวและสถานะตรวจยืนยัน.

การควบคุมการแสดงสินค้า

ที่มีอยู่ monetization_update ภาพข้อมูลอาจรวม meta.monetization.commerce.live: null เพื่อใช้กำหนดการที่บันทึกไว้ หรือ {mode: "show" | "hide", url?: "https://...", until: 0 | epochMilliseconds} Show จับคู่ URL สินค้าที่บันทึกไว้แบบตรงตัว หากไม่มีสินค้าจะไม่แสดงการ์ด ค่า until ที่เป็นบวกจะหมดอายุและกลับสู่กำหนดการที่บันทึกไว้ ค่าเป็นศูนย์คงอยู่จนเปลี่ยนหรือ SSN เริ่มใหม่ Hide ระงับการโปรโมต ไม่ใช่การแจ้งเตือนกิจกรรมที่ชำระเงิน

commerce.viewerURL เป็น URL ร้านค้าแบบอ่านอย่างเดียวที่เผยแพร่ หรือสตริงว่าง เมื่อมี QR โปรโมตจะลิงก์ไปที่นั่น ไม่มีเซสชัน SSN หรือคีย์เผยแพร่ สินค้ายังคงอยู่ใน commerce.items ส่วนควบคุมแสดงผล การนำเข้า หรือการเผยแพร่ไม่ส่งอีเวนต์บริจาค/ซื้อ ดู การควบคุมสินค้า สำหรับใช้กับ Event Flow และ API ระยะไกล

ส่วน Event Flow commerceControl การกระทำรอคำตอบโดยตรง/Chrome (สูงสุดแปดวินาที) สำหรับข้อมูลอีเวนต์ทั่วไป จะคงอีเวนต์และเพิ่ม meta.commerceControlResult: {success: true, commerce: controlState} หรือ {success: false, error: "..."} สำหรับค่าตัวเลข อาร์เรย์ หรือค่าอื่นที่ไม่ใช่ออบเจ็กต์ที่มีอยู่ใน meta, เมทาดาทาไม่เปลี่ยน และส่งข้อมูลวินิจฉัยกลับเป็น commerceControlResult ในผลการกระทำแทน การควบคุมที่ล้มเหลวหยุดการกระทำถัดไปในสายเดียวกันโดยไม่ระงับอีเวนต์ชำระเงินต้นฉบับ การหมดเวลาไม่ได้ยืนยันว่าการควบคุมไม่มีผล ตรวจสถานะก่อนลองคำสั่งแบบอ้างอิงค่าปัจจุบัน เช่น Next ซ้ำ ความสำเร็จยืนยันสถานะเลือก/ซ่อน/กำหนดเวลาในเครื่อง ไม่เคยยืนยันการมองเห็นใน OBS หรือการซิงก์หน้าสาธารณะ

ขั้นตอนงาน Stream Deck / API แบบมีชื่อ

ส่วน ตัวเรียกขั้นตอนงานแบบมีชื่อ สร้างข้อความ Event Flow ภายในพร้อม type: "api", event: "workflow_trigger", chatname: "Stream Deck / API", ค่าว่างของ chatmessage, และ textonly: true ส่วนค่าของมัน meta.workflow ออบเจ็กต์มีชื่อตัวเรียกและ JSON ที่ผู้เรียกให้มา data ออบเจ็กต์ อ่านค่าผ่านเทมเพลต เช่น {meta.workflow.data.minutes} ประเมินเฉพาะโฟลว์ที่บันทึกและเปิดใช้ซึ่งตรงกับตัวเรียกนั้นอย่างชัดเจน ไม่ใช่อีเวนต์ผู้ชม/แชตขาเข้าและไม่เผยแพร่เป็นแชต การคัดลอกช่องเหล่านี้เข้าแชตไม่ทำให้ตัวเรียกที่ระบุชื่อทำงาน

รุ่นนำร่องผู้ชม NinjaChatter

ตัวเชื่อมต่อส่วนขยายแบบจับคู่รุ่นทดลองส่งแถวสำหรับแสดงผลเท่านั้นพร้อม type: socialstreamchat, platform: ninjachatter, และ textonly: true. meta.ninjachatter มีค่า origin: audience, ข้อมูลเชิงบรรยาย provider, และค่าสาธารณะ room ID แถวเหล่านี้ข้ามการตอบแพลตฟอร์ม บอต ตัวเรียก Event Flow และแต้ม ผู้ให้บริการที่แสดงไม่ได้หมายถึงการอนุญาต การจับแหล่ง NinjaChatter แบบเดิมรวม meta.ninjachatter.room สำหรับตัดรายการซ้ำเฉพาะห้อง

Cheer ใช้เส้นทางรับสิทธิ์และผลลัพธ์แยกที่ยืนยันตัวตน ไม่ใช้คำสั่งแชตพิเศษ ค่าที่ตั้งไว้แบบคงที่ส่งอีเวนต์โอเวอร์เลย์ Actions เดิม show_text ข้อความนานสามวินาที การรับหมายถึงช่องทางยอมรับ ไม่ได้ยืนยันการแสดงใน OBS ข้อมูลผู้ชมไม่สามารถเลือกการกระทำตามอำเภอใจ รุ่นนำร่องปิดอยู่ตามค่าเริ่มต้นใน NinjaChatter ส่วน Electron คงรีเลย์เดิมจนกว่าจะยืนยันความพร้อมของขอบเขตจับคู่ส่วนตัวใหม่

กระดานช่องการค้าและการขายล่าสุด

ตัวเดิม monetization_update อีเวนต์ (type/platform: socialstream) ยังรวม meta.monetization.boards ส่วนค่าของมัน board มี title, style (spots/teams), columns (1–20), visible, และสูงสุด 120 รายการของ spots แต่ละช่องมีค่าสตริง id, ข้อความธรรมดา label, status (available/claimed/revealed) และ result (ข้อความธรรมดา ว่างจนกว่าจะเปิดเผย) การจองและเปิดเผยเป็นสถานะแสดงผลที่ผู้ดำเนินรายการป้อน ไม่ใช่หลักฐานซื้อหรือการจัดสรรแบบสุ่ม

boards.sales เก็บระเบียนล่าสุดสูงสุด 100 รายการ: id, title, ตัวเลือกเพิ่มเติม amount (null เมื่อไม่ทราบ), currency, quantity, source, และ at (มิลลิวินาที Unix เมื่อบันทึก) automatic เลือกเปิดการรวบรวม, salesVisible ควบคุมการแสดงและ revision เพิ่มเมื่อเปลี่ยน การรวบรวมอัตโนมัติรับเฉพาะ purchase อีเวนต์จาก Shopify, ผู้ขาย eBay, Fourthwall, Ko-fi และ Buy Me a Coffee ไม่รวมอีเวนต์ส่วนตัว/ทดสอบ ไม่ถือเมทาดาทาประมูล ทิป ของขวัญ หรือการจองช่องเป็นการซื้อ ระเบียนอัตโนมัติไม่ใช้ยอดคำสั่งซื้อ ราคาประกาศขาย หรือยอดบริจาคแทนราคาสินค้า ระเบียนที่ป้อนเองใช้ source: "Host confirmed".

สถานะคงอยู่ในพื้นที่เก็บข้อมูลสร้างรายได้ส่วนตัวของการติดตั้งนี้ ภาพข้อมูลสาธารณะไม่รวมรหัสตัดการส่งซ้ำ ตัวตนผู้ซื้อ และข้อมูลลับ การขายที่แสดงอย่างชัดเจนเก็บรหัสอีเวนต์ไว้เพื่อนำออก การคืนเงินต้องให้ผู้ดำเนินรายการนำออก รหัสซื้อซ้ำถูกจำแยกไว้ (สูงสุด 2,000) แม้ล้างประวัติที่แสดงแล้ว ส่วนเดิม getCommerceState คำตอบรวม commerce.boards; commerceControl รับคำสั่งกระดาน/การขายที่อธิบายไว้ใน คู่มือกระดาน การแก้ไขด้วยตนเองเผยแพร่สถานะที่อัปเดต แต่ไม่สร้างอีเวนต์ซื้อ ยอดบริจาค หรือรางวัลแบบเสียเงิน โอเวอร์เลย์ซ่อนเมื่อไม่มีภาพข้อมูลจากผู้ดำเนินรายการนาน 35 วินาที

ส่วนเพิ่มของขั้นตอนผู้ขาย: commerce.boards.board.id ระบุรุ่นของกระดาน การสั่งด้วยตนเอง saleAdd อาจให้ค่า boardId และ spotId เพื่อบันทึกการขายและจองช่องนั้นเป็นการทำงานเดียวกัน การขายเชื่อมโยงซ้ำที่ยังอยู่ในประวัติล่าสุดจะถูกปฏิเสธ saleRemove พร้อม reopenSpot: true คืนช่องนั้นให้ว่างเฉพาะเมื่อรุ่นกระดานยังตรงกัน รายการขายสาธารณะไม่ใส่ช่องเชื่อมโยงสำหรับผู้ดำเนินการเหล่านี้ ตัวเลือกเพิ่มเติม platform ในการขายที่ป้อนเองคงแหล่งข้อมูลไว้สำหรับกรอง ส่วน source: "Host confirmed" ระบุวิธียืนยัน amount เป็นยอดรวมของรายการ รวมค่า quantity ค่าของอะแดปเตอร์คำสั่งซื้อที่ชำระแล้วของ eBay meta.ebayPurchase.quantity คงไว้

salesSettings.auctionSource เลือกเปิดตัวช่วยสินค้า Whatnot หรือ eBay Live ค่าของคำตอบควบคุม commerce.auction มีเพียง source, title, priceText, status และ at จากข้อมูลล่าสุดที่จับได้ auction_update, หรือ null หมดอายุหลังห้านาที และล้างเมื่อเปลี่ยนแหล่งข้อมูล ได้รับภาพข้อมูลว่าง หรือเริ่มใหม่ ตัวช่วยมีให้เฉพาะผู้ดำเนินการ ไม่บันทึกถาวรและไม่รวมในการเผยแพร่ให้ผู้ชม โดยทิ้งตัวตนผู้เสนอราคา/ผู้ชนะ สคริปต์แหล่งข้อมูลและข้อมูลอีเวนต์ประมูลไม่เปลี่ยน การคัดลอกร่างไม่ได้ยืนยันการชำระเงินหรือสร้างรายการขาย