diff --git a/horizontal-chat/script.js b/horizontal-chat/script.js index 34967d1..7cc6f56 100644 --- a/horizontal-chat/script.js +++ b/horizontal-chat/script.js @@ -62,6 +62,7 @@ const showKickGifts = GetBooleanParam("showKickGifts", true); const showYouTubeMessages = GetBooleanParam("showYouTubeMessages", true); const showYouTubeSuperChats = GetBooleanParam("showYouTubeSuperChats", true); const showYouTubeSuperStickers = GetBooleanParam("showYouTubeSuperStickers", true); +const showYouTubeSubscribers = GetBooleanParam("showYouTubeSubscribers", false); const showYouTubeMemberships = GetBooleanParam("showYouTubeMemberships", true); const enableTikTokSupport = GetBooleanParam("enableTikTokSupport", false); @@ -235,6 +236,11 @@ client.on('YouTube.SuperSticker', (response) => { YouTubeSuperSticker(response.data); }) +client.on('YouTube.NewSubscriber', (response) => { + console.debug(response.data); + YouTubeNewSubscriber(response.data); +}) + client.on('YouTube.NewSponsor', (response) => { console.debug(response.data); YouTubeNewSponsor(response.data); @@ -1043,6 +1049,18 @@ function YouTubeSuperSticker(data) { ShowAlert(message, 'youtube'); } +function YouTubeNewSubscriber(data) { + if (!showYouTubeSubscribers) + return; + + // Set the text + let username = data.user.name; + + const message = `${username} subscribed`; + + ShowAlert(message, 'youtube'); +} + function YouTubeNewSponsor(data) { if (!showYouTubeMemberships) return; diff --git a/horizontal-chat/settings/settings.json b/horizontal-chat/settings/settings.json index eac218e..ee7fe66 100644 --- a/horizontal-chat/settings/settings.json +++ b/horizontal-chat/settings/settings.json @@ -250,6 +250,14 @@ "defaultValue": true, "group": "Which YouTube messages do you want to see?" }, + { + "id": "showYouTubeSubscribers", + "label": "New Subscribers", + "description": "", + "type": "checkbox", + "defaultValue": false, + "group": "Which YouTube messages do you want to see?" + }, { "id": "showYouTubeMemberships", "label": "Memberships", diff --git a/multichat-overlay/script.js b/multichat-overlay/script.js index 5c989db..aea3f9c 100644 --- a/multichat-overlay/script.js +++ b/multichat-overlay/script.js @@ -68,6 +68,7 @@ const showKickGifts = GetBooleanParam("showKickGifts", true); const showYouTubeMessages = GetBooleanParam("showYouTubeMessages", true); const showYouTubeSuperChats = GetBooleanParam("showYouTubeSuperChats", true); const showYouTubeSuperStickers = GetBooleanParam("showYouTubeSuperStickers", true); +const showYouTubeSubscribers = GetBooleanParam("showYouTubeSubscribers", false); const showYouTubeMemberships = GetBooleanParam("showYouTubeMemberships", true); const enableTikTokSupport = GetBooleanParam("enableTikTokSupport", false); @@ -271,6 +272,11 @@ client.on('YouTube.SuperSticker', (response) => { YouTubeSuperSticker(response.data); }) +client.on('YouTube.NewSubscriber', (response) => { + console.debug(response.data); + YouTubeNewSubscriber(response.data); +}) + client.on('YouTube.NewSponsor', (response) => { console.debug(response.data); YouTubeNewSponsor(response.data); @@ -1662,6 +1668,35 @@ function YouTubeSuperSticker(data) { AddMessageItem(instance); } +function YouTubeNewSubscriber(data) { + if (!showYouTubeSubscribers) + return; + + // Get a reference to the template + const template = document.getElementById('cardTemplate'); + + // Create a new instance of the template + const instance = template.content.cloneNode(true); + + // Get divs + const cardDiv = instance.querySelector("#card"); + const headerDiv = instance.querySelector("#header"); + const avatarDiv = instance.querySelector("#avatar"); + const iconDiv = instance.querySelector("#icon"); + const titleDiv = instance.querySelector("#title"); + const contentDiv = instance.querySelector("#content"); + + // Set the card background colors + cardDiv.classList.add('youtube'); + + // Set the text + let username = data.user.name; + + titleDiv.innerText = `${username} subscribed`; + + AddMessageItem(instance, JSON.stringify(data)); +} + function YouTubeNewSponsor(data) { if (!showYouTubeMemberships) return; diff --git a/multichat-overlay/settings/settings.json b/multichat-overlay/settings/settings.json index 8445c9d..aeb1699 100644 --- a/multichat-overlay/settings/settings.json +++ b/multichat-overlay/settings/settings.json @@ -379,6 +379,14 @@ "defaultValue": true, "group": "Which YouTube messages do you want to see?" }, + { + "id": "showYouTubeSubscribers", + "label": "New Subscribers", + "description": "", + "type": "checkbox", + "defaultValue": false, + "group": "Which YouTube messages do you want to see?" + }, { "id": "showYouTubeMemberships", "label": "Memberships", diff --git a/multistream-alerts/script.js b/multistream-alerts/script.js index b25d9f0..7705497 100644 --- a/multistream-alerts/script.js +++ b/multistream-alerts/script.js @@ -89,6 +89,8 @@ const showYouTubeSuperChats = GetBooleanParam("showYouTubeSuperChats", true); const youtubeSuperChatAction = urlParams.get("youtubeSuperChatAction") || ""; const showYouTubeSuperStickers = GetBooleanParam("showYouTubeSuperStickers", true); const youtubeSuperStickerAction = urlParams.get("youtubeSuperStickerAction") || ""; +const showYouTubeSubscribers = GetBooleanParam("showYouTubeSubscribers", false); +const youtubeSubscriberAction = urlParams.get("youtubeSubscriberAction") || ""; const showYouTubeMemberships = GetBooleanParam("showYouTubeMemberships", true); const youtubeMembershipAction = urlParams.get("youtubeMembershipAction") || ""; @@ -247,6 +249,11 @@ client.on('YouTube.SuperSticker', (response) => { YouTubeSuperSticker(response.data); }) +client.on('YouTube.NewSubscriber', (response) => { + console.debug(response.data); + YouTubeNewSubscriber(response.data); +}) + client.on('YouTube.NewSponsor', (response) => { console.debug(response.data); YouTubeNewSponsor(response.data); @@ -827,6 +834,29 @@ function YouTubeSuperSticker(data) { ); } +function YouTubeNewSubscriber(data) { + if (!showYouTubeSubscribers) + return; + + // Set the text + const username = data.user.name; + + // Render avatars + const avatarURL = data.user.profileImageUrl; + + UpdateAlertBox( + 'youtube', + avatarURL, + `${username}`, + `subscribed`, + ``, + username, + ``, + youtubeSubscriberAction, + data + ); +} + function YouTubeNewSponsor(data) { if (!showYouTubeMemberships) return; diff --git a/multistream-alerts/settings/settings.json b/multistream-alerts/settings/settings.json index ec19143..b5346b2 100644 --- a/multistream-alerts/settings/settings.json +++ b/multistream-alerts/settings/settings.json @@ -380,6 +380,23 @@ "showIf": "showYouTubeSuperStickers", "group": "Which YouTube alerts do you want to see?" }, + { + "id": "showYouTubeSubscribers", + "label": "New Subscribers", + "description": "", + "type": "checkbox", + "defaultValue": false, + "group": "Which YouTube alerts do you want to see?" + }, + { + "id": "youtubeSubscriberAction", + "label": "", + "description": "Also run this Streamer.bot Action", + "type": "sb-actions", + "defaultValue": "", + "showIf": "showYouTubeSubscribers", + "group": "Which YouTube alerts do you want to see?" + }, { "id": "showYouTubeMemberships", "label": "Memberships",