Довідник живих подій
Ця сторінка документує канонічні дані подій, які Social Stream Ninja надсилає для основних платформ. Використовуйте її як спільне джерело істини при підключенні нових джерел, усуненні несправностей інтеграцій або узгодженні підписів інтерфейсу. Коротшу таблицю для споживачів дивіться в Сумісність подій і сповіщень.
На цій сторінці
Перейдіть до спільних правил полів, реалізації платформи або приміток щодо сумісності наприкінці.
Важливо: Доступність подій залежить від джерела, дозволів і налаштувань захоплення. Щоб приховати рядки з позначкою події в доку або оверлеї вибраних повідомлень, додайте &hideevents або &hideallevents. Щоб приховати вибрані події, використовуйте &filterevents=subscription_gift,new_follower,gifted. Ці фільтри також можуть приховати платні рядки, що мають event; звичайні рядки донатів без позначки події не зіставляються фільтрами подій. Інші фільтри повідомлень усе одно застосовуються.
Виберіть спосіб захоплення: Для YouTube, Twitch і Kick Режим WebSocket зазвичай надає ширше охоплення подій. Стандартне захоплення DOM читає рядки й картки, фактично відображені на сторінці. YouTube Super Chats, Super Stickers і подарунки Jewel мають шляхи захоплення в обох режимах; інші подарунки, чайові й події членства залежать від джерела. Підтримувані шляхи й потрібні налаштування наведено в таблицях платформ.
Структура даних: Рядки чату у стилі донатів мають використовувати 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 |
- |
- |
Видимі рядки донатів cheese |
Рядки чату, зображення значків, емоти й опитування кількості глядачів |
| BEAM |
- |
- |
- |
Рядки чату й опитування кількості глядачів, коли сторінка лише чату надає лічильник глядачів |
| Seal Team Sloth |
- |
- |
- |
Відображені рядки чату окремого вікна та viewer_update опитує, коли кількість глядачів увімкнено |
| Castyr |
- |
- |
- |
Відображені рядки чату окремого вікна й окремо вмикані оновлення кількості глядачів |
| RPLAY |
- |
- |
- |
З авторизацією /live/chat/box/ окреме вікно: type: "rplay" чат, аватари, зображення значків рівнів і емоти. Чайові монетами зберігають суму/одиницю в hasDonation для спільного перерахунку в USD, без події донату. Окремо вмикана viewer_update опитування використовують ціле meta з публічної кінцевої точки трансляції 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 | рядок | число (необов’язково) | Ідентифікатор повідомлення або події. Його значення залежить від джерела й транспорту; не вважайте, що це завжди власний ID модерації платформи. Використовуйте meta.messageId коли адаптер надає його для синхронізації видалення. |
data.donoValue | число (необов’язково) | Наданий джерелом числовий еквівалент у USD, зокрема оцінки. Коректне значення (включно з нулем) має перевагу над конвертацією currency.js. За його відсутності споживачі оцінюють USD за hasDonation і контекстом джерела. Оригінальні суми й одиниці залишаються в hasDonation і наявних метаданих постачальника. |
data.chatbadges | масив | рядок (необов’язково) | URL зображень значків або об’єкти значків (type: "img" з src, type: "svg" з html, або type: "text" з text). Пересилання зберігає буквальний підпис текстового значка в необов’язковому rawText і створює екрановане text для старіших оверлеїв. На наступних проходах пересилання генеруйте заново text з rawText; не екрануйте 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 як звичайний текст, зберігаючи буквальні теги й текст, схожий на сутності; не декодуйте, не очищуйте як HTML і не додавайте теги форматування до цього тексту. Застосовуйте оформлення події до відображуваного елемента. false означає chatmessage може містити очищений/придатний до відображення HTML; старіші повідомлення без прапорця зберігають цю поведінку HTML. Інші звичайні поля є простим текстом, окрім медіаполів, як-от chatimg і contentimg. Відображайте текстові поля через textContent, або екрануйте їх один раз під час створення HTML-шаблону; не видаляйте й не декодуйте їхній вміст повторно. |
data.contentimg |
рядок (необов’язково) |
Зображення вмісту або URL підтримуваного медіа. У розширенні й настільному застосунку окремо вмикана функція allowExternalGifs налаштування заповнює порожнє поле з першого прямого посилання HTTP(S) на GIF у тексті повідомлення або HTML-посиланні. Шлях URL має закінчуватися на .gif (без урахування регістру); параметри запиту й фрагменти зберігаються. Ключ API не потрібен, зберігає chatmessage і наявні вкладення, а також враховує removeContentImage. Необов’язкове hideExternalGifUrl налаштування додає meta.hideExternalGifUrl: true; док і оверлей вибраних повідомлень приховують відповідне посилання 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 у секундах попередньої збереженої активності чату цього користувача, коли ввімкнено визначення нових учасників чату й локальну базу даних. Пропускається для зовсім нових користувачів. |
Охоплення платформ
YouTube — стандартне захоплення DOM
Реалізація: sources/youtube.js
- Тримайте вкладку живого чату відкритою. Захоплення читає картки членства й подарунків, відображені в цій сесії; глядач не обов’язково має бути власником каналу або модератором. Доступ облікового запису та вибраний вигляд чату можуть впливати на видимі рядки.
- Якщо відкрити оверлей кількості глядачів і активності чату з відображенням глядачів, їхня кількість запитується автоматично. Налаштування Показувати кількість глядачів і Відстежувати активних учасників чату також вмикають збирання даних.
- Для сповіщень про підписників і додаткових подій, увімкніть режим WebSocket у налаштуваннях розширення.
| Подія |
Коли спрацьовує |
Примітки щодо даних |
sponsorship |
Вітальний заголовок членства без явного тексту чату (нові учасники, надходження подарованих пакетів), включно зі структурованими вітальними картками або локалізованим текстом «Welcome to …». |
membership заповнюється перекладеним «MEMBERSHIP»; subtitle містить серію/рівень, якщо визначено; 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 і автоматично вставляє «Thank you for your donation!» для оверлеїв. |
redirect |
У живому чаті з’являється банер перенаправлення YouTube (найближчий відповідник сповіщення про рейд). |
Захоплення лише DOM із yt-live-chat-banner-redirect-renderer. Задає event до redirect і використовує membership як підпис, щоб оверлеї відображали його як інші системні повідомлення. |
viewer_update |
Опитування кінцевої точки глядачів Social Stream кожні 30 с (у разі помилок квоти — зчитування сторінки). |
meta є цілою кількістю поточних глядачів; входить до сукупного viewer_updates у фоновому скрипті. |
Блоки членства також задають membership для чату модераторів/учасників, тоді як subtitle містить кількість місяців або назви рівнів. sourceName/sourceImg заповнюються, щойно getChannelInfo вдається. Стандартний чат DOM тепер включає meta.messageId коли YouTube надає власний ID повідомлення живого чату, який док використовує для синхронізації видалення.
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 хвилин). Примітка: результати можуть затримуватися або бути неповними; можна визначити лише публічно видимі підписки.
- Банери перенаправлення YouTube не надаються через Data API, тому
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 є загальною кількістю платних підписників; інтерфейс оновлює лічильники панелі. |
view_update |
Опитування статистики каналу (перегляди за весь час), коли showviewercount або режим ажіотажу активний. |
meta є цілою кількістю переглядів. |
live_chat_ended |
Живий чат стає недоступним для прив’язаної трансляції. |
meta.streamTitle заповнюється, коли метадані трансляції кешовані. |
user_banned |
userBannedEvent з API живого чату або потоку gRPC. |
Подія лише з метаданими для віджетів модерації. meta включає ім’я користувача/відображуване ім’я, ID каналу, 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 щоб дії видалення в доку могли повертатися до API модерації YouTube.
Сповіщення про підписників YouTube (new_follower)
Social Stream тепер може визначати нових підписників YouTube за допомогою myRecentSubscribers кінцева точка API. Працює подібно до сповіщень про підписників Streamlabs.
Як це працює:
- Опитує YouTube API кожні 5 хвилин щодо нових підписників
- Відстежує побачених підписників у localStorage для визначення нових
- Надсилає
new_follower події з іменем, аватаром та ID каналу підписника
- Типово залишає сповіщення про підписників вимкненими; після ввімкнення використовується поточний рядок перекладу для
alert-just-subscribed
- Типово групує серії з понад трьох нових підписників, щоб повторні підключення не переповнювали оверлеї або Event Flow
- Потребує ввімкненого режиму WebSocket у налаштуваннях розширення
Обмеження (це обмеження YouTube API, а не Social Stream):
- Без гарантованої затримки доставки — SSN опитує кожні п’ять хвилин, але API може повертати затримані або неповні результати. Не покладайтеся на фіксоване чотиригодинне вікно.
- Лише публічні підписки — Підписники, які зробили список підписок приватним, не запускатимуть сповіщень. На YouTube підписки приватні за замовчуванням.
- Лише власник каналу — Ви можете отримувати сповіщення про підписників лише для каналів, якими володієте й під обліковим записом яких авторизовані.
- Використання квоти API — Кожне опитування коштує 1 одиницю API. З інтервалом 5 хвилин це приблизно 288 одиниць на день (із типової добової квоти 10 000).
Тригер редактора Event Flow: Використовуйте data.event === "new_follower" і data.type === "youtube"
YouTube WebSocket: короткий довідник подій і членства
data.event |
data.membership |
Сценарій |
sponsorship | new_sponsor | Новий учасник через newSponsorEvent |
sponsorship | new_member | Новий учасник через processMembership |
resub | renewed_member | Поновлення членства |
resub | upgraded_member | Підвищення рівня |
giftpurchase | gift_giver | Подаровані членства на каналі |
giftredemption | gift_recipient | Отримано подароване членство |
membermilestone | member_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 налаштування.
- Окремо вмикана функція PluralMind налаштування може замінити
chatname, nameColor, і частину, обгорнуту проксі, у chatmessage, і може додати текстовий значок займенників. username залишається логіном Twitch; пов’язані видалення містять delete.meta.pluralmind щоб док використовував цей стабільний логін.
| Подія |
Коли спрацьовує |
Примітки щодо даних |
reward |
Картки використання балів каналу (включно з контейнером винагород 7TV). |
chatmessage містить текст використання винагороди; membership без змін. |
giftpurchase |
Системні рядки, наприклад «User gifting X Subs in the channel». |
chatmessage є системним рядком, що дозволяє оверлеям виділяти кампанії дарувальників. |
subscription_gift |
Сповіщення про подаровані підписки («User gifted a Sub to …»). |
Позначає подію для фільтрів виділення; membership залишається підписом значка одержувача. |
viewer_update |
Запит кожні 30 с до проксі глядачів Social Stream (у разі помилки — 0). |
meta ціла кількість глядачів. |
hype_train |
Закріплене виділення спільноти Twitch показує активний Hype Train у чаті окремого вікна. |
Запасний варіант DOM лише з метаданими та meta.sourceMode задається як dom. Використовує видимий рівень, таймер і meta.progressPercent коли Twitch не надає підсумки балів EventSub. |
community_highlight |
Елементи всередині віджета Twitch «Community Highlight». |
meta є витягнутим текстом виділення для автоматизацій. |
knock |
Запрошення до спільної роботи Stream Together, показані над чатом. |
chatmessage містить текст запрошення; chatname визначається за користувачем сповіщення, якщо доступний. |
watch_streak |
Сповіщення Watch Streak, яким глядач за бажанням поділився в чаті Twitch. |
meta.streakCount містить видиму кількість, якщо визначено; meta.milestoneId використовує ідентифікатор повідомлення DOM, якщо доступний. |
Bits/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, використання балів каналу й метадані потяга ажіотажу.
- Рядки Shared Chat використовують Twitch IRC
source-room-id щоб заповнити sourceName/sourceImg з початковим каналом, коли він відрізняється від підключеного.
- Сповіщення Watch Streak, якими діляться глядачі, типово вимкнені й потребують Показувати серії переглядів Twitch налаштування.
- Окремо вмикана функція PluralMind налаштування може замінити
chatname, nameColor, і частину, обгорнуту проксі, у chatmessage, і може додати текстовий значок займенників. username і userid зберігають ідентичність Twitch; пов’язані видалення містять delete.meta.pluralmind щоб док використовував ці стабільні поля.
| Подія |
Коли спрацьовує |
Примітки щодо даних |
cheer |
Сповіщення Cheer від EventSub channel.bits.use. |
hasDonation «N bits»; meta.bits числове; chatmessage зберігає необроблене повідомлення; визначені відправники cheer включають chatimg. |
powerup |
Вбудовані або власні сповіщення Power-up від EventSub channel.bits.use. |
Дані лише події з порожнім chatmessage і без hasDonation, тому не створює звичайного рядка чату. meta.bits є числовим, а meta.powerUp зберігає підтип Twitch, назву/ID винагороди, подробиці ефекту й наданий текст повідомлення, якщо доступний. |
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 включає ID винагороди, назву, вартість, запит, введення користувача, ID/стан використання та застарілий псевдонім. Без поля верхнього рівня 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 (потребує токена транслятора з дозволом на підписки). |
meta ціла кількість платних підписників. |
stream_online / stream_offline |
EventSub stream.online/stream.offline. |
meta.startedAt присутній для подій online; offline використовує порожній об’єкт. |
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 включає ID потяга, рівень, прогрес, ціль, підсумок, учасників підтримки, часові поля, прапорець спільного потяга та trainType. Потяги скарбів відображаються через meta.trainType коли Twitch їх позначає. |
user_banned |
EventSub channel.ban, або IRC CLEARCHAT як запасний варіант, коли події блокування EventSub недоступні. |
Подія лише з метаданими для віджетів модерації. meta включає ім’я користувача/відображуване ім’я, ID користувача, URL аватара/профілю, модератора, причину, тривалість блокування/тайм-ауту та постійність. |
Дані чату повторно використовують спільного постачальника, тому data.event заповнюється для `/me` (action) і застарілий bits теги навіть поза потоками EventSub. Повідомлення GIF Twitch поміщають ресурс Giphy в contentimg, залиште chatmessage порожнім і збережіть запасний підпис Twitch у meta.gifLabel. Логіка усунення дублікатів і видалення використовує ID повідомлень; повідомлення, надіслані через 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 | рядок | Стабільний ID потяга. Використовуйте його для додавання/оновлення одного видимого віджета потяга. |
meta.broadcasterUserId | рядок | ID користувача транслятора 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; потяги скарбів відображаються тут, коли 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 повідомляє, що вивід трансляції перейшов у стан started. |
type є obs; event є stream_started; meta.source є obs-websocket або obs-browser-source; meta.outputState може містити необроблений стан виводу OBS. |
stream_stopped |
OBS повідомляє, що вивід трансляції перейшов у стан stopped. |
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 |
Сповіщення Twitch про біти/cheer. |
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 повторює підказки значків (рівні підписників). Кешування аватарів зберігає chatimg коректним між подіями; якщо DOM приховує колір для модераторів, скрипт очищує nameColor. Рядки подарунків TikFinity також задають contentimg як піктограму подарунка, якщо доступна. Оновлення серій подарунків власного DOM і TikFinity включають meta.tiktokGiftStreakId, meta.tiktokGiftCount, і meta.tiktokGiftQuietMs щоб оверлеї могли об’єднувати повторні оновлення; застарілі ID серій унікальні для екземпляра сторінки. Метадані подарунка також можуть включати tiktokGiftMessageId (оригінальний ID повідомлення TikTok), tiktokGiftSenderId, groupId, giftId, giftName, streakable, і repeatEnd. Власні ID визначають той самий подарунок у різних вікнах захоплення; ненульовий ID групи разом з ID відправника й подарунка визначає сукупні оновлення серії. Захоплення WebSocket SSApp надає ті самі поля після завершення серії, з count зберігається для сумісності. Перемикач донатів перевіряється при пересиланні кожного подарунка: вимкнення донатів TikTok прибирає hasDonation і donoValue зі збереженням події подарунка та метаданих. Озвучення використовує ці ідентичності для об’єднання оновлень і пригнічення завершених дублікатів протягом максимум десяти хвилин (обмежений кеш) та читає подарунки TikTok як відправника, кількість і назву подарунка. Старіші дані повертаються до наявних ID серій і тексту повідомлення; ідентичність не виводиться лише з тексту подарунка. Озвучення подарунків TikTok використовує вибрану мову озвучення/голосу незалежно від мови інтерфейсу. Дієслова оголошень локалізовані англійською, іспанською, португальською, французькою, німецькою, італійською й нідерландською; інші мови використовують відправника, кількість і назву подарунка без англійського дієслова. Спрощене озвучення зберігає цей нейтральний формат. Назви подарунків залишаються такими, як їх надає платформа; це не перекладає автоматично каталоги подарунків або повідомлення чату й не визначає мову трансляції.
Для цих оновлень серій кількість і підпис донату є сукупними: 1, 2, 3 означає три подарунки, а не шість. Споживачі підсумків мають додавати лише приріст понад найбільшу вже отриману суму для ID цієї серії. Стандартне захоплення підтримує застарілі класи подарунків і поточні рядки зображення/кількості; обидва зберігають event: "gift" і hasDonation. Для невідомих цін зберігаються кількість/назви подарунків для показу та використовується оцінка в USD з розрахунку одна монета за подарунок. Надане джерелом donoValue має пріоритет; метадані відображеного подарунка можуть надавати coinsPerGift або diamondsPerGift перш ніж знадобиться таблиця подарунків або типове значення. Оцінки монет Standard/TikFinity і власні оцінки діамантів SSApp використовують наявні окремі перерахунки; жодна не є гарантованою грошовою виплатою.
Whatnot
Реалізація: sources/whatnot.js
- Відкрийте сторінку живого шоу Whatnot із видимим чатом; наявне захоплення WebSocket надає чат, сповіщення аукціону/продажу, невдалі платежі, рейди, донати та швидкі оновлення глядачів. Знімки товарів/розіграшів досі залежать від розділів DOM, відображених у вигляді шоу.
- Захоплювати події трансляції керує системними подіями Whatnot і оновленнями метаданих аукціону/каталогу; рядки приєднання також потребують Захоплювати події трансляції «joined»; кількість глядачів і далі підпорядковується перемикачам глядачів/ажіотажу.
| Подія |
Коли спрацьовує |
Примітки щодо даних |
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", із покупцем, товаром, ID замовлення й іншими дозволеними полями з цього сповіщення. Це залишається окремою платіжною подією; воно не створює ще одну 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). Ці посилання на товари описують каталог або батьківське оголошення; вони не замінюють ID замовлення. Кількість у запасі не вважається купленою кількістю.
Для автоматизації успішної оплати задайте Тип події (розширений) тригер на Власна подія: payment_succeeded, і відфільтруйте джерело до Whatnot. Наявні умови й шаблони можуть використовувати поле цієї події userid, chatname, subtitle і meta.orderId безпосередньо. Збережена покупка не потрібна, якщо сповіщення містить необхідні подробиці.
Завершення аукціону або позначення товару проданим не підтверджує успішну оплату: ці сповіщення не надсилаються як оплачені purchase події й не задають суми донатів. Подія успіху надсилається лише для отриманого payment_succeeded сповіщення; захоплення не опитує завершення оплати й не виводить його з продажу. Інші paymentStatus значення пересилаються лише коли явно надані в захопленому пакеті. Відсутні ідентифікатори пропускаються; один ID товару може охоплювати кілька продажів, тому для зіставлення сповіщень використовуйте наданий ID замовлення/аукціону. Захоплення не пам’ятає покупки й не зіставляє оновлення платежів; будь-який такий процес потрібно явно налаштувати в Event Flow. Короткочасні дублікати пакетів від двох наявних мостів захоплення пригнічуються. Необроблені об’єкти замовлень/платежів не пересилаються.
eBay Live
Підключення продавця eBay у Monetization потребує налаштованого сервісу SSN eBay і згоди продавця через OAuth; захоплення eBay Live нижче незалежне. Режим пісочниці використовує URL тестових оголошень, позначає покупця як «eBay Sandbox buyer» і додає префікс повідомлення «Sandbox test purchase:». Покупки пісочниці зберігають той самий контракт покупки й можуть запускати ввімкнені сповіщення/дії чату під час перевірки. Його реалізований платіжний контракт надсилає 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 залишається запасним варіантом, коли мережеві дані недоступні.
- Захоплювати події трансляції керує знімками метаданих (
auction_update, commerce_update); лічильники глядачів і далі враховують перемикачі глядачів/ажіотажу.
| Подія |
Коли спрацьовує |
Примітки щодо даних |
viewer_update |
Коли змінюється кількість глядачів активної події (лічильник заголовка або запасний індикатор живої події). |
meta є цілою кількістю глядачів. |
follower_update |
Коли кінцева точка статистики продавця повертає кількість його підписників. |
meta є цілою кількістю підписників. Джерело опитує кінцеву точку продавця кожні 60 секунд; вона все ще може повертати кешоване значення до 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. Токени оновлюються автоматично.
- Налаштування вебхуків Kick може тривати кілька хвилин; інтерфейс показує активні підписки для кожного каналу.
| Подія |
Коли спрацьовує |
Примітки щодо даних |
message |
Дані чату мосту. |
meta.plainText містить звичайний текст повідомлення (який усе ще може містити емодзі); значки поєднують платформу й кеш профілів. Відповіді в гілках заповнюють initial, reply, і meta.reply коли доступні подробиці відповіді або кешоване батьківське повідомлення. |
reward |
channel.reward.redemption.updated, а також дані чату/системи мосту, схожі на використання винагород. |
meta включає ID винагороди/використання, назву, вартість, стан, введення користувача й отримувача винагороди. |
new_subscriber |
channel.subscription.new. |
membership призначено ролі підписника; 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 |
Міст надає кількість підписників у даних вебхуків. |
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 з мосту/вебхука або подій блокування сокета чату Kick. |
Подія лише з метаданими для віджетів модерації. meta включає ім’я користувача/відображуване ім’я, ID користувача, URL аватара/профілю, модератора, причину, тривалість блокування/тайм-ауту та постійність. |
Пошук профілів використовує profileCache; mapBadges поєднує ресурси значків Kick із кешованим SVG, якщо доступний. Коли Kick повідомляє донати в KICKs, міст перетворює їх на hasDonation а також meta.amount з currency запасний варіант — «KICKs». Дані чату включають meta.messageId коли міст надає власний ID повідомлення Kick, щоб синхронізація видалення могла націлитися на правильне повідомлення. Дані відповідей включають meta.reply з батьківським messageId, author, і text коли відомо. Надані подробиці відповіді залишаються доступними, навіть якщо початкове повідомлення не кешоване; відповідь лише з ID без кешованого контексту все ще може не мати видимої цитати.
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 також можна надати вручну.
- Плоскі кадри VPZone, як-от
type: "msg" нормалізуються в стандартні дані чату.
- На боці платформи
delete_message / clear_chat кадри прибирають відповідні рядки з дока; необов’язкові перемикачі синхронізують видалення й блокування дока назад у VPZone (лише власник каналу).
- Власники каналів отримують локальну для сторінки панель Stream Info для оновлення назви й категорії прямої трансляції (за тим самим зразком, що й сторінка джерела Twitch).
| Подія |
Коли спрацьовує |
Примітки щодо даних |
message |
VPZone msg, message, new_message, або chat_message кадр WebSocket. |
chatname надходить із username; chatmessage надходить із body; прапорці підписника/власника/модератора/VIP копіюються в chatbadges, прапорці ролей верхнього рівня та meta. Власні ID заповнюють 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 (ID повідомлення, автор, уривок — денормалізовані на сервері). |
Відображаються як відповіді 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 поле, яке використовують доки з увімкненими кольорами.
- Редагування повідомлень на сайті замінюють відповідний рядок дока; видалення, приглушення й блокування прибирають відповідні рядки за власним ID або іменем користувача.
- Окреме джерело 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 використовується для допоміжних кінцевих точок, як-от
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 розміщується в полі верхнього рівня 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. |
Використовується для автоматизацій online/offline, що враховують транспорт. |
user_enter / user_leave |
Joystick UserPresence типи enter_stream / leave_stream. |
Сповіщення присутності надсилаються як повідомлення подій і можуть приховуватися налаштуваннями приховування подій. Ці налаштування також приховують події трансляції без донатів. |
viewer_update |
Авторизоване джерело вебсайту отримує ViewerCountUpdated через EventLogChannel. |
Використовує звичайне ціле число meta, відповідно до YouTube, Twitch і Kick. Надсилається лише за ввімкненого режиму кількості глядачів або ажіотажу. Окреме джерело з обліковими даними бота досі не отримує кількість глядачів. |
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 відображає їх без звичайного класу рядка чату або ID повідомлення; видима сума надається через
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, яке опитується з того самого джерела з cookie сесії: 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 (із cookie), 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/ сторінках і ефірах у переглядачі історій; власність визначається для кожного профілю та перевіряється повторно після невдалого пошуку) і надсилаються у власному ефірі та на всіх сторінках поза ефіром. Лише одна активна вкладка 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, коли ввімкнено захоплення кількості глядачів або режим ажіотажу. |
meta ціла кількість глядачів. Опитування зупиняється, коли broadcast_status більше не є "live". |
stream_online / stream_offline |
stream_online спрацьовує один раз на початку сесії трансляції REST; stream_offline спрацьовує, коли сигнал підтримання з’єднання повідомляє неактивний broadcast_status (потребує захоплення кількості глядачів або режиму ажіотажу). |
Події лише з метаданими, що відповідають спільному словнику стану трансляції Twitch і Joystick. |
new_follower |
Новина у вхідних із типом підписки notif_name (або story_type 12) з’являється. |
chatname є новим підписником, chatimg їхнє зображення профілю, chatmessage текст вхідних (наприклад, «x started following you.»). |
follow_request |
Подія private_user_follow_request новина з’являється (приватні облікові записи отримують запити замість прямих підписок). |
Та сама структура, що й new_follower, збережені окремо, щоб автоматизації могли схвалювати запити або вітати по-різному. |
liked |
Новина у вхідних із типом вподобання notif_name (зокрема comment_like) з’являється. |
Спільний словник вподобань із TikTok/MeetMe. chatname є виконавцем, chatmessage текст вхідних (наприклад, «x liked your photo.»). |
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 для ID автора, якщо доступний, timestamp для коректного часу створення в мілісекундах Unix і contentimg для зображення-вкладення HTTP(S), наданого API. Коментарі лише із зображенням можуть мати порожнє chatmessage. textonly застосовується лише до тексту повідомлення: необроблений текст при true, екранований HTML при false.
- Контекст коментарів API використовує
meta.messageId (власний ID коментаря), 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 публічного чату й заголовка медіа.
- Кількість глядачів оновлюється лише коли Показувати кількість глядачів або режим ажіотажу ввімкнений.
| Подія |
Коли спрацьовує |
Примітки щодо даних |
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 ціла кількість глядачів; надсилається лише коли Показувати кількість глядачів або режим ажіотажу ввімкнений і надсилає 0 якщо значок стає нечитабельним, щоб очистити застарілі лічильники. |
Streamplace
Реалізація: sources/streamplace.js
- Читає живу сторінку Streamplace, відображену React, і пропускає видиму історію чату під час підключення.
- Повідомлення у стилі пересилання, наприклад
Name (Discord): message нормалізуються до імені пересланого відправника.
| Подія |
Коли спрацьовує |
Примітки щодо даних |
message |
Нові рядки чату Streamplace з’являються після підключення. |
Стандартні дані чату з nameColor, chatbadges, посилання зі збереженим HTML і поля відповіді initial, reply, і meta.reply коли видиме. |
viewer_update |
Значок глядачів у заголовку змінюється, коли ввімкнено захоплення кількості глядачів або режим ажіотажу. |
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 для сторінок лише чату й старіших макетів.
- Наявна історія чату пропускається під час підключення захоплення; перевіряйте новим повідомленням.
- Для кількості глядачів потрібно Показувати кількість глядачів або режим ажіотажу. Окремі події подарунків/чайових і надсилання відповідей не реалізовані. Відображений рядок усе ще може надавати підпис донату через
data-ww-donation.
| Подія |
Коли спрацьовує |
Примітки щодо даних |
message |
З’являється новий відображений рядок чату WorldsWave. |
Стандартні дані чату з type: "worldswave", ім’я відправника, аватар, необов’язковий ID користувача, колір імені, значки, стан модератора, членство, значення донату, вкладення та ідентичність каналу. Стабільні ID повідомлень WorldsWave надаються як meta.messageId і з усуненням дублікатів між одночасними панелями попереднього перегляду/повного чату. Вбудовані зображення повідомлень залишаються очищеними, коли текстовий режим вимкнений. |
viewer_update |
Видима поточна загальна кількість глядачів змінюється, коли ввімкнено захоплення кількості глядачів або режим ажіотажу. |
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/* сторінки.
- Для кількості глядачів потрібно Показувати кількість глядачів або режим ажіотажу.
| Подія |
Коли спрацьовує |
Примітки щодо даних |
message |
З’являється новий відображений рядок чату Seal Team Sloth. |
Стандартні дані чату з type: "sealteamsloth", ім’я відправника, аватар і вміст повідомлення. |
viewer_update |
Видима поточна загальна кількість глядачів змінюється, коли ввімкнено захоплення кількості глядачів або режим ажіотажу. |
meta є цілою кількістю глядачів; компактні значення, наприклад 1.2K нормалізуються. |
MeetMe — захоплення DOM і WebSocket
Реалізація: sources/meetme.js
- Читає DOM відображеного живого чату MeetMe на
app.meetme.com/live/view/... сторінках і всередині api.gateway.meetme-live.com/web-live/... iframe.
- Коли WebSocket iframe доступний,
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 ціла кількість глядачів; надсилається лише за ввімкненого захоплення кількості глядачів або режиму ажіотажу. |
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 |
Видима кількість глядачів змінюється, коли ввімкнено захоплення глядачів або режим ажіотажу. |
meta ціла кількість глядачів. |
Parti — захоплення чату профілю / окремого вікна
Реалізація: sources/parti.js
- Підтримує URL профілів, як-от
https://parti.com/USERNAME і URL окремих вікон, наприклад https://parti.com/popout-chat?id=USER_ID.
- Кількість глядачів використовує кінцеву точку підтримання трансляції Parti, коли ввімкнено захоплення глядачів або режим ажіотажу.
| Подія |
Коли спрацьовує |
Примітки щодо даних |
message |
Видимі рядки чату Parti з’являються в потоці чату профілю або окремого вікна. |
Стандартні дані чату; nameColor зберігає відображений колір автора Parti та chatmessage зберігає вбудований вміст, якщо текстовий режим не ввімкнено. |
donation |
Видимі рядки чайових Parti вказують, що користувач надіслав певну суму чайових. |
hasDonation містить показану суму, meta.amount/meta.currency заповнюються, якщо їх можна розібрати, meta.amountText зберігає необроблений текст суми, а donoValue задається для чайових у USD. |
viewer_update |
Сигнал підтримання з’єднання Parti повертає поточну кількість глядачів. |
meta є цілою кількістю глядачів; сторінка повторно використовує один токен підтримання з’єднання на вікно джерела, щоб не завищувати кількість. |
CHZZK — захоплення чату в окремому вікні
Реалізація: sources/chzzk.js
- Підтримує
https://chzzk.naver.com/live/*/chat і https://chzzk.naver.com/iframe/live/*/chat.
- Кількість глядачів використовує кінцеву точку опитування стану ефіру CHZZK, коли ввімкнено захоплення глядачів або режим ажіотажу.
| Подія |
Коли спрацьовує |
Примітки щодо даних |
message |
Видимі рядки чату CHZZK з’являються в потоці чату окремого вікна. |
Стандартні дані чату з type: "chzzk", nameColor, URL зображень значків у chatbadges, і відображені емоти в chatmessage якщо текстовий режим не ввімкнено. |
чат із hasDonation |
Видимі рядки донатів cheese CHZZK з’являються в чаті. |
hasDonation містить показану суму cheese. Ці рядки не задають data.event. |
viewer_update |
Опитування стану ефіру повертає кількість глядачів. |
meta є цілою кількістю глядачів. |
Rumble — стандартне захоплення DOM
Реалізація: sources/rumble.js
- Потребує cookie автентифікованої сесії, щоб
service.php API глядачів відповідає.
- Відображені рядки Rant надають
hasDonation; картки вхідних рейдів надають event: "raid". Це джерело DOM не надсилає потік подій підписників/платних підписників мосту API.
| Подія |
Коли спрацьовує |
Примітки щодо даних |
message |
Видимі рядки чату Rumble з’являються на сторінці або у вікні чату. |
Стандартні дані чату; chatmessage зберігає HTML зображень емотів Rumble після їх відображення сторінкою, якщо текстовий режим не ввімкнено. |
viewer_update |
Викликає API Rumble video.watching-now сервіс кожні 30 с. |
meta ціла кількість глядачів; використовує credentials: 'include' щоб повторно використовувати cookie сесії. |
чат із 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 не описує офіційної кінцевої точки надсилання чату, тому це джерело пересилає повідомлення/події в Social Stream, але не надсилає чат назад у Rumble.
livestreams[].chat заповнюється лише поки вибрана трансляція наживо. Використовуйте ?streamId=... щоб закріпити конкретну трансляцію, коли API надає більше однієї; некоректні ID тепер спричиняють помилку замість непомітного переходу до іншої трансляції.
- Сторінка також визначає
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 відображає емоти коротких кодів Rumble як HTML зображень і meta.plainText зберігає початковий текст короткого коду. |
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 після визначення ID трансляції офіційним 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 є цілою кількістю, прочитаною з елемента активного чату Castyr з атрибутом title. |
SOOP — захоплення DOM програвача
Реалізація: sources/sooplive.js. Підтримує єдину play.sooplive.com програвач і застарілий play.sooplive.co.kr URL. Колишній глобальний макет чату все ще розпізнається, якщо надається.
Публічний чат надсилає type/platform: "sooplive", звичайний текст chatname/userid, nameColor, і очищене chatmessage. Наявні рядки, повторні ID повідомлень, копії перекладу й приватні повідомлення виключаються. Емоти стають безпечними зображеннями або альтернативним текстом у текстовому режимі.
З 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, зображення перетворюються на альтернативний текст або [image] коли альтернативний текст недоступний. Аватари, значки, донати й членства залишаються порожніми, коли відсутні в захопленому рядку.
Тримайте віртуалізований чат прокрученим до найновіших повідомлень. Наявна історія, повторно відображені рядки й системні повідомлення без автора виключаються. Індекси відображення залишаються внутрішніми й не надсилаються як власні ID повідомлень. Події підписок, донатів, кількості глядачів або модерації не виводяться.
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, зображення перетворюються на альтернативний текст або [image].
ID повідомлень використовуються внутрішньо, щоб не захоплювати повторно зміни й повторно змонтовані рядки. Початкова історія та старіші повідомлення, додані зверху, пропускаються; часові позначки й меню реакцій не входять до захопленого тексту. Події донатів, членства, модерації або кількості глядачів не виводяться.
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. Вбудовані емоти відтворюються як безпечні зображення або їхній альтернативний текст, коли 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. Вбудовані емоти стають безпечними зображеннями або альтернативним текстом у текстовому режимі. Prime також включає поле рядка userid і підтримує як посилання профілів з авторизацією, так і підписи імен без авторизації. Аватари й значки залишаються порожніми, якщо вони недоступні у перевіреній структурі рядка.
Початкова історія, закріплені картки й попередні перегляди відповідей виключаються. w.tv віртуалізує чат: для захоплення тримайте прокрутку біля найновіших повідомлень. Його тестові ID DOM є індексами відображення, а не власними ID повідомлень. Prime пропускає старішу історію, завантажену вище початкових повідомлень, і заглушки ігнорованих користувачів.
Жодне вікно не надає перевіреної кількості глядачів трансляції, тому ці адаптери не надсилають оновлень глядачів і не виводять події донатів, підписок або модерації.
Межі охоплення й сумісності
Цей довідник описує реалізовані дані, а не гарантує, що кожна платформа доставляє кожну подію. Порожні hasDonation присвоєння в джерелі не доводять підтримки донатів. Видимість DOM, дозволи облікового запису, перемикачі захоплення й доступність API все ще визначають отримані дані. Пересилання видалень залежить від джерела; не припускайте універсальної синхронізації модерації.
Відстежувані невідповідності та прогалини
| Пара/область |
Виявлена невідповідність / прогалина |
Вплив |
| Twitch: Standard і 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: Standard і WebSocket |
Standard надсилає легкі позначки (gift, reward, логічне true, viewer_update). WebSocket додає офіційні події підписок, платних підписок, подарунків, використання винагород, KICKs, модерації та стану ефіру. Він зберігає обробку сумісності для застарілого raid дані, але Kick наразі не пропонує офіційної підписки raid/host. |
Режим WebSocket має ширші можливості; при переході слід переглянути автоматизацію, побудовану навколо назв подій лише Standard. Не вимагайте події рейду Kick. |
| YouTube: Standard і 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. Приймайте поточний контракт джерела та відповідні застарілі псевдоніми замість перейменування всіх відповідних подій.
| Псевдонім / застаріла назва |
Канонічна заміна |
Контекст |
subscription | new_subscriber | Нова підписка Twitch/Kick |
subgift | subscription_gift | Подарована підписка Twitch |
membership | sponsorship | Новий учасник YouTube (загальний) |
new_member | sponsorship | Новий учасник YouTube |
new_membership | sponsorship | Новий учасник YouTube |
newmember | sponsorship | Новий учасник YouTube |
new-membership | sponsorship | Зчитувач YouTube DOM (варіант із дефісом) |
upgraded_membership | resub | Підвищення рівня YouTube |
upgraded-membership | resub | Зчитувач YouTube DOM (варіант із дефісом) |
membership_upgrade | resub | Підвищення рівня YouTube |
membership_milestone | membermilestone | Повідомлення віхи YouTube |
member_milestone | membermilestone | Повідомлення віхи YouTube (варіант із підкресленням) |
gift_membership | giftpurchase | Пакет подарунків YouTube |
membership_gift | giftpurchase | Пакет подарунків YouTube |
giftmemberships | giftpurchase | Пакет подарунків YouTube (варіант у множині) |
gifted_membership | giftredemption | Отриманий подарунок YouTube |
gifted_memberships | giftpurchase | Пакет подарунків YouTube (варіант у множині) |
community_gift | giftpurchase | Пакет подарунків спільноті |
channel_points | reward | Використання винагороди Twitch WebSocket (застарілий псевдонім) |
followed | new_follower | Поточний вивід TikTok DOM/TikFinity; приймайте обидві назви під час поєднання режимів захоплення TikTok. |
Використання цього довідника
- Додаючи нову подію, використовуйте наявний словник (
subscription_gift, viewer_updateтощо) за можливості. Якщо відхилення неминуче, задокументуйте його тут разом з обґрунтуванням.
- Залиште
data.meta передбачуваним: надавайте перевагу плоским ключам, ніколи не перевантажуйте рядки змішаними даними й завжди включайте одиниці (currency, bits, duration).
- Оновлюйте цю сторінку разом зі змінами даних; інструкції агентів оновлюйте лише при зміні спільних правил розробки.
- Перевіряйте зміни даних і з боку джерела, яке їх надсилає, і з боку оверлею або тригера Event Flow, що їх споживає.
- Захоплення залежить від підтримки джерела й налаштувань. Щоб приховати рядки з позначкою події в доку або оверлеї вибраних повідомлень, додайте
&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 (без повторного відтворення), або окремо вмиканий приймач підписаних вебхуків на SSN API (до семи днів доставки з черги). Надійні доставки використовують стабільний ninjabacker:delivery:DELIVERY_ID id. Жоден режим не отримує скасувань через повернення/спори. Облікові дані приймача й секрети підпису ніколи не потрапляють у дані подій. Значення 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 IDs ніколи не включаються. 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}. Вкладені шляхи чутливі до регістру, відсутні значення відображаються порожніми, а обхід прототипів заборонений.
Вебхуки торгівлі авторів і рекламні оверлеї
Публічні платежі 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, одержувач other), DONATION (звичайний рядок донату) і SUBSCRIPTION_PURCHASED (new_subscriber). Наявні суми замовлень зберігають hasDonation для зворотної сумісності, позначене meta.commerce.legacyDonationValue: true; це явний виняток із нових типових правил продажу товарів. Замовлення із застосованими подарунковими картками створюють сповіщення про покупку без значення донату: нове списання неможливо надійно визначити із загальної суми замовлення, а придбання подарунка вже враховане. Платіжні імена й електронні адреси не використовуються для публічної ідентичності. Тестові події панелі та оновлення замовлень не створюють платних сповіщень.
Ці адаптери зберігають наявне пересилання, дії ботів, Event Flow і маршрутизацію цілей, з meta.webhookId усунення дублікатів. Вони надають публічні імена, звичайні текстові повідомлення, відомі назви товарів у subtitle, і ISO meta.commerce.currency поряд із числовими значеннями донатів, де доречно. Вони не додають обліку повернень або нової автентифікації приймача; використовуйте наявний налаштований маршрут вебхука постачальника.
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 вебхука або облікових даних прослуховування.
Голосові команди ведучого (попередня настільна версія)
У Event Flow Коли я кажу… тригер отримує довірені локальні команди мікрофона від SSApp. Його внутрішній контекст дії використовує chatname: "Host", type: "hostvoice", розпізнана фраза в chatmessage, і textonly: true. Це не вхідна подія платформи й не новий транспорт чату. Надсилання цих полів через чат не може активувати голосовий тригер.
Потребує оновленої настільної збірки, явного запуску мікрофона й увімкнення дій після тестового режиму. Дивіться налаштування попередньої версії та стан перевірки.
Керування відображенням товарів
Наявне 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".
Стан зберігається в приватному сховищі монетизації цієї інсталяції; публічні знімки виключають ID усунення дублікатів доставки, ідентичність покупця та секрети. Явно показані продажі зберігають ID подій для видалення. Повернення потребують видалення ведучим. Дубльовані ID покупок запам’ятовуються окремо (до 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. Він спливає через п’ять хвилин і очищується при зміні джерела, неактивному знімку або перезапуску. Помічник призначений лише для оператора: він не зберігається та не входить до глядацьких трансляцій; особу учасника торгів/переможця відкидають. Скрипти джерел і дані подій аукціону не змінюються. Копіювання чернетки не підтверджує оплату й не створює продажу.