mirror of
https://github.com/nuttylmao/nutty.gg.git
synced 2026-11-04 00:20:59 -05:00
@@ -4,6 +4,9 @@
|
|||||||
|
|
||||||
const avatarMap = new Map();
|
const avatarMap = new Map();
|
||||||
const pronounMap = new Map();
|
const pronounMap = new Map();
|
||||||
|
// const kickPusherKey = '32cbd69e4b950bf97679'; // Updated Pusher key for Kick
|
||||||
|
const kickPusherKey = '34bf7a0ff419a2a775b9'; // Updated Pusher key for Kick
|
||||||
|
const kickPusherWsUrl = `wss://ws-us2.pusher.com/app/${kickPusherKey}?protocol=7&client=js&version=8.4.0&flash=false`;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -325,7 +328,7 @@ function RandomHex(str) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Used to construct a message from "parts" variable commonly found in Streamer.bot chat messages
|
// Used to construct a message from "parts" variable commonly found in Streamer.bot chat messages
|
||||||
function ConstructMessageFromParts(parts) {
|
function ConstructMessageFromParts(parts, isHorizontalChat = false, twitchGIFsEnabled = false) {
|
||||||
return parts.map(part => {
|
return parts.map(part => {
|
||||||
if (part.emoji)
|
if (part.emoji)
|
||||||
return ` <img src="${EscapeHTML(part.image)}" alt="${EscapeHTML(part.text)}" title="${EscapeHTML(part.text)}" class="emote"> `;
|
return ` <img src="${EscapeHTML(part.image)}" alt="${EscapeHTML(part.text)}" title="${EscapeHTML(part.text)}" class="emote"> `;
|
||||||
@@ -358,7 +361,15 @@ function ConstructMessageFromParts(parts) {
|
|||||||
case "mention":
|
case "mention":
|
||||||
return part.text;
|
return part.text;
|
||||||
case "gif":
|
case "gif":
|
||||||
return `<img src="${EscapeHTML(part.url)}" class="gif">`;
|
if (twitchGIFsEnabled)
|
||||||
|
{
|
||||||
|
if (!isHorizontalChat)
|
||||||
|
return `<img src="${EscapeHTML(part.url)}" class="gif">`;
|
||||||
|
else
|
||||||
|
return `<img src="${EscapeHTML(part.url)}" class="emote">`;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return `<b><i>${EscapeHTML(part.text)}</i></b>`;
|
||||||
default:
|
default:
|
||||||
return `<img src="${EscapeHTML(part.imageUrl)}" alt="${EscapeHTML(part.text)}" title="${EscapeHTML(part.text)}" class="emote">`;
|
return `<img src="${EscapeHTML(part.imageUrl)}" alt="${EscapeHTML(part.text)}" title="${EscapeHTML(part.text)}" class="emote">`;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ let alertQueue = [];
|
|||||||
// GLOBAL VARS //
|
// GLOBAL VARS //
|
||||||
/////////////////
|
/////////////////
|
||||||
|
|
||||||
const kickPusherWsUrl = 'wss://ws-us2.pusher.com/app/32cbd69e4b950bf97679?protocol=7&client=js&version=7.6.0&flash=false';
|
|
||||||
let kickSubBadges = [];
|
let kickSubBadges = [];
|
||||||
|
|
||||||
/////////////
|
/////////////
|
||||||
@@ -51,6 +50,7 @@ const showTwitchPowerUpRedemptions = GetBooleanParam("showTwitchPowerUpRedemptio
|
|||||||
const showTwitchRaids = GetBooleanParam("showTwitchRaids", true);
|
const showTwitchRaids = GetBooleanParam("showTwitchRaids", true);
|
||||||
const showTwitchWatchStreaks = GetBooleanParam("showTwitchWatchStreaks", true);
|
const showTwitchWatchStreaks = GetBooleanParam("showTwitchWatchStreaks", true);
|
||||||
const showTwitchSharedChat = GetBooleanParam("showTwitchSharedChat", true);
|
const showTwitchSharedChat = GetBooleanParam("showTwitchSharedChat", true);
|
||||||
|
const showTwitchGIFs = GetBooleanParam("showTwitchGIFs", false);
|
||||||
|
|
||||||
const showKickMessages = GetBooleanParam("showKickMessages", true);
|
const showKickMessages = GetBooleanParam("showKickMessages", true);
|
||||||
const showKickFollows = GetBooleanParam("showKickFollows", false);
|
const showKickFollows = GetBooleanParam("showKickFollows", false);
|
||||||
@@ -62,6 +62,8 @@ const showKickGifts = GetBooleanParam("showKickGifts", true);
|
|||||||
const showYouTubeMessages = GetBooleanParam("showYouTubeMessages", true);
|
const showYouTubeMessages = GetBooleanParam("showYouTubeMessages", true);
|
||||||
const showYouTubeSuperChats = GetBooleanParam("showYouTubeSuperChats", true);
|
const showYouTubeSuperChats = GetBooleanParam("showYouTubeSuperChats", true);
|
||||||
const showYouTubeSuperStickers = GetBooleanParam("showYouTubeSuperStickers", true);
|
const showYouTubeSuperStickers = GetBooleanParam("showYouTubeSuperStickers", true);
|
||||||
|
const showYouTubeJewelsGifted = GetBooleanParam("showYouTubeJewelsGifted", true);
|
||||||
|
const showYouTubeSubscribers = GetBooleanParam("showYouTubeSubscribers", false);
|
||||||
const showYouTubeMemberships = GetBooleanParam("showYouTubeMemberships", true);
|
const showYouTubeMemberships = GetBooleanParam("showYouTubeMemberships", true);
|
||||||
|
|
||||||
const enableTikTokSupport = GetBooleanParam("enableTikTokSupport", false);
|
const enableTikTokSupport = GetBooleanParam("enableTikTokSupport", false);
|
||||||
@@ -235,6 +237,16 @@ client.on('YouTube.SuperSticker', (response) => {
|
|||||||
YouTubeSuperSticker(response.data);
|
YouTubeSuperSticker(response.data);
|
||||||
})
|
})
|
||||||
|
|
||||||
|
client.on('YouTube.JewelsGifted', (response) => {
|
||||||
|
console.debug(response.data);
|
||||||
|
YouTubeJewelsGifted(response.data);
|
||||||
|
})
|
||||||
|
|
||||||
|
client.on('YouTube.NewSubscriber', (response) => {
|
||||||
|
console.debug(response.data);
|
||||||
|
YouTubeNewSubscriber(response.data);
|
||||||
|
})
|
||||||
|
|
||||||
client.on('YouTube.NewSponsor', (response) => {
|
client.on('YouTube.NewSponsor', (response) => {
|
||||||
console.debug(response.data);
|
console.debug(response.data);
|
||||||
YouTubeNewSponsor(response.data);
|
YouTubeNewSponsor(response.data);
|
||||||
@@ -576,7 +588,7 @@ async function TwitchChatMessage(data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set the message data
|
// Set the message data
|
||||||
let message = ConstructMessageFromParts(data.parts);
|
let message = ConstructMessageFromParts(data.parts, true, showTwitchGIFs);
|
||||||
const messageColor = data.user.color;
|
const messageColor = data.user.color;
|
||||||
const role = data.user.role;
|
const role = data.user.role;
|
||||||
|
|
||||||
@@ -681,7 +693,7 @@ async function TwitchAnnouncement(data) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
let message = ConstructMessageFromParts(data.parts);
|
let message = ConstructMessageFromParts(data.parts, true, showTwitchGIFs);
|
||||||
|
|
||||||
ShowAlert(message, background);
|
ShowAlert(message, background);
|
||||||
}
|
}
|
||||||
@@ -834,7 +846,7 @@ async function TwitchWatchStreak(data) {
|
|||||||
|
|
||||||
// TODO: Streamer.bot v1.0.5-alpha3 changed the data sent with this event, so for backwards compatibility we need to check for both the old and new properties
|
// TODO: Streamer.bot v1.0.5-alpha3 changed the data sent with this event, so for backwards compatibility we need to check for both the old and new properties
|
||||||
const displayName = data.displayName ?? data.user.name;
|
const displayName = data.displayName ?? data.user.name;
|
||||||
const watchStreak = data.watchStreak ?? data.streak_count;
|
const watchStreak = data.watchStreak ?? data.streak_count ?? data.streakCount;
|
||||||
|
|
||||||
let message = `${displayName} is currently on a ${watchStreak} stream streak!`;
|
let message = `${displayName} is currently on a ${watchStreak} stream streak!`;
|
||||||
|
|
||||||
@@ -937,7 +949,7 @@ function YouTubeMessage(data) {
|
|||||||
|
|
||||||
// Set the message data
|
// Set the message data
|
||||||
//let message = RenderMessageWithEmotesHTML(data.message, data.emotes);
|
//let message = RenderMessageWithEmotesHTML(data.message, data.emotes);
|
||||||
let message = ConstructMessageFromParts(data.parts);
|
let message = ConstructMessageFromParts(data.parts, true, showTwitchGIFs);
|
||||||
|
|
||||||
// Set furry mode
|
// Set furry mode
|
||||||
if (furryMode)
|
if (furryMode)
|
||||||
@@ -1043,6 +1055,27 @@ function YouTubeSuperSticker(data) {
|
|||||||
ShowAlert(message, 'youtube');
|
ShowAlert(message, 'youtube');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function YouTubeJewelsGifted(data) {
|
||||||
|
if (!showYouTubeJewelsGifted)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let message = `${data.user.name} gifted ${data.jewelsAmount} Jewels`;
|
||||||
|
|
||||||
|
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) {
|
function YouTubeNewSponsor(data) {
|
||||||
if (!showYouTubeMemberships)
|
if (!showYouTubeMemberships)
|
||||||
return;
|
return;
|
||||||
@@ -1361,7 +1394,7 @@ async function KickChatMessage(data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set the message data
|
// Set the message data
|
||||||
let message = ConstructMessageFromParts(data.parts);
|
let message = ConstructMessageFromParts(data.parts, true, showTwitchGIFs);
|
||||||
|
|
||||||
// Set furry mode
|
// Set furry mode
|
||||||
if (furryMode)
|
if (furryMode)
|
||||||
|
|||||||
@@ -226,6 +226,14 @@
|
|||||||
"defaultValue": true,
|
"defaultValue": true,
|
||||||
"group": "Which Twitch messages do you want to see?"
|
"group": "Which Twitch messages do you want to see?"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "showTwitchGIFs",
|
||||||
|
"label": "GIFs",
|
||||||
|
"description": "Tier 2/3 subs only",
|
||||||
|
"type": "checkbox",
|
||||||
|
"defaultValue": false,
|
||||||
|
"group": "Which Twitch messages do you want to see?"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "showYouTubeMessages",
|
"id": "showYouTubeMessages",
|
||||||
"label": "Chat Messages",
|
"label": "Chat Messages",
|
||||||
@@ -250,6 +258,22 @@
|
|||||||
"defaultValue": true,
|
"defaultValue": true,
|
||||||
"group": "Which YouTube messages do you want to see?"
|
"group": "Which YouTube messages do you want to see?"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "showYouTubeJewelsGifted",
|
||||||
|
"label": "Jewels Gifted",
|
||||||
|
"description": "",
|
||||||
|
"type": "checkbox",
|
||||||
|
"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",
|
"id": "showYouTubeMemberships",
|
||||||
"label": "Memberships",
|
"label": "Memberships",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div id="statusContainer">Connecting...</div>
|
<div id="statusContainer" style="display: none;"></div>
|
||||||
<div id="mainContainer" class="slide-fade">
|
<div id="mainContainer" class="slide-fade">
|
||||||
<ul id="messageList">
|
<ul id="messageList">
|
||||||
</ul>
|
</ul>
|
||||||
@@ -98,8 +98,6 @@
|
|||||||
<img src="icons/badges/kick-kicks.svg" style="height: 1em; padding-left: 0.5em; padding-right: 0.25em;">
|
<img src="icons/badges/kick-kicks.svg" style="height: 1em; padding-left: 0.5em; padding-right: 0.25em;">
|
||||||
<span id="kick-gift-amount">13</span>
|
<span id="kick-gift-amount">13</span>
|
||||||
</div>
|
</div>
|
||||||
<div id="kick-gift-message">
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<img class="kick-gift-sticker"
|
<img class="kick-gift-sticker"
|
||||||
src="" />
|
src="" />
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ const sbServerPort = urlParams.get("port") || "8080";
|
|||||||
/////////////////
|
/////////////////
|
||||||
|
|
||||||
const youtubeRegex = /^(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([a-zA-Z0-9_-]{11})(?:[&?#].*)?$/;
|
const youtubeRegex = /^(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([a-zA-Z0-9_-]{11})(?:[&?#].*)?$/;
|
||||||
const kickPusherWsUrl = 'wss://ws-us2.pusher.com/app/32cbd69e4b950bf97679?protocol=7&client=js&version=7.6.0&flash=false';
|
|
||||||
let kickSubBadges = [];
|
let kickSubBadges = [];
|
||||||
|
|
||||||
/////////////
|
/////////////
|
||||||
@@ -57,6 +56,7 @@ const showTwitchPowerUpRedemptions = GetBooleanParam("showTwitchPowerUpRedemptio
|
|||||||
const showTwitchRaids = GetBooleanParam("showTwitchRaids", true);
|
const showTwitchRaids = GetBooleanParam("showTwitchRaids", true);
|
||||||
const showTwitchWatchStreaks = GetBooleanParam("showTwitchWatchStreaks", true);
|
const showTwitchWatchStreaks = GetBooleanParam("showTwitchWatchStreaks", true);
|
||||||
const showTwitchSharedChat = GetIntParam("showTwitchSharedChat", 2);
|
const showTwitchSharedChat = GetIntParam("showTwitchSharedChat", 2);
|
||||||
|
const showTwitchGIFs = GetBooleanParam("showTwitchGIFs", true);
|
||||||
|
|
||||||
const showKickMessages = GetBooleanParam("showKickMessages", true);
|
const showKickMessages = GetBooleanParam("showKickMessages", true);
|
||||||
const showKickFollows = GetBooleanParam("showKickFollows", false);
|
const showKickFollows = GetBooleanParam("showKickFollows", false);
|
||||||
@@ -68,6 +68,8 @@ const showKickGifts = GetBooleanParam("showKickGifts", true);
|
|||||||
const showYouTubeMessages = GetBooleanParam("showYouTubeMessages", true);
|
const showYouTubeMessages = GetBooleanParam("showYouTubeMessages", true);
|
||||||
const showYouTubeSuperChats = GetBooleanParam("showYouTubeSuperChats", true);
|
const showYouTubeSuperChats = GetBooleanParam("showYouTubeSuperChats", true);
|
||||||
const showYouTubeSuperStickers = GetBooleanParam("showYouTubeSuperStickers", true);
|
const showYouTubeSuperStickers = GetBooleanParam("showYouTubeSuperStickers", true);
|
||||||
|
const showYouTubeJewelsGifted = GetBooleanParam("showYouTubeJewelsGifted", true);
|
||||||
|
const showYouTubeSubscribers = GetBooleanParam("showYouTubeSubscribers", false);
|
||||||
const showYouTubeMemberships = GetBooleanParam("showYouTubeMemberships", true);
|
const showYouTubeMemberships = GetBooleanParam("showYouTubeMemberships", true);
|
||||||
|
|
||||||
const enableTikTokSupport = GetBooleanParam("enableTikTokSupport", false);
|
const enableTikTokSupport = GetBooleanParam("enableTikTokSupport", false);
|
||||||
@@ -271,6 +273,16 @@ client.on('YouTube.SuperSticker', (response) => {
|
|||||||
YouTubeSuperSticker(response.data);
|
YouTubeSuperSticker(response.data);
|
||||||
})
|
})
|
||||||
|
|
||||||
|
client.on('YouTube.JewelsGifted', (response) => {
|
||||||
|
console.debug(response.data);
|
||||||
|
YouTubeJewelsGifted(response.data);
|
||||||
|
})
|
||||||
|
|
||||||
|
client.on('YouTube.NewSubscriber', (response) => {
|
||||||
|
console.debug(response.data);
|
||||||
|
YouTubeNewSubscriber(response.data);
|
||||||
|
})
|
||||||
|
|
||||||
client.on('YouTube.NewSponsor', (response) => {
|
client.on('YouTube.NewSponsor', (response) => {
|
||||||
console.debug(response.data);
|
console.debug(response.data);
|
||||||
YouTubeNewSponsor(response.data);
|
YouTubeNewSponsor(response.data);
|
||||||
@@ -675,7 +687,7 @@ async function TwitchChatMessage(data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set the message data
|
// Set the message data
|
||||||
let message = ConstructMessageFromParts(data.parts);
|
let message = ConstructMessageFromParts(data.parts, false, showTwitchGIFs);
|
||||||
const messageColor = data.user.color;
|
const messageColor = data.user.color;
|
||||||
const role = data.user.role;
|
const role = data.user.role;
|
||||||
|
|
||||||
@@ -927,7 +939,7 @@ async function TwitchAnnouncement(data) {
|
|||||||
else
|
else
|
||||||
content.querySelector("#username").innerText = `${data.user.name} (${data.user.login})`;
|
content.querySelector("#username").innerText = `${data.user.name} (${data.user.login})`;
|
||||||
content.querySelector("#username").style.color = data.user.color;
|
content.querySelector("#username").style.color = data.user.color;
|
||||||
content.querySelector("#message").innerHTML = ConstructMessageFromParts(data.parts);
|
content.querySelector("#message").innerHTML = ConstructMessageFromParts(data.parts, false, showTwitchGIFs);
|
||||||
|
|
||||||
// Remove the line break
|
// Remove the line break
|
||||||
content.querySelector("#colon-separator").style.display = `inline`;
|
content.querySelector("#colon-separator").style.display = `inline`;
|
||||||
@@ -1307,10 +1319,10 @@ async function TwitchWatchStreak(data) {
|
|||||||
|
|
||||||
// TODO: Streamer.bot v1.0.5-alpha3 changed the data sent with this event, so for backwards compatibility we need to check for both the old and new properties
|
// TODO: Streamer.bot v1.0.5-alpha3 changed the data sent with this event, so for backwards compatibility we need to check for both the old and new properties
|
||||||
const displayName = data.displayName ?? data.user.name;
|
const displayName = data.displayName ?? data.user.name;
|
||||||
const watchStreak = data.watchStreak ?? data.streak_count;
|
const watchStreak = data.watchStreak ?? data.streak_count ?? data.streakCount;
|
||||||
|
|
||||||
titleDiv.innerText = `${displayName} is currently on a ${watchStreak} stream streak! `;
|
titleDiv.innerText = `${displayName} is currently on a ${watchStreak} stream streak! `;
|
||||||
contentDiv.innerHTML = ConstructMessageFromParts(data.parts);
|
contentDiv.innerHTML = ConstructMessageFromParts(data.parts, false, showTwitchGIFs);
|
||||||
|
|
||||||
AddMessageItem(instance, data.messageId);
|
AddMessageItem(instance, data.messageId);
|
||||||
}
|
}
|
||||||
@@ -1427,7 +1439,7 @@ async function YouTubeMessage(data) {
|
|||||||
|
|
||||||
// Set the message data
|
// Set the message data
|
||||||
//let message = RenderMessageWithEmotesHTML(data.message, data.emotes);
|
//let message = RenderMessageWithEmotesHTML(data.message, data.emotes);
|
||||||
let message = ConstructMessageFromParts(data.parts);
|
let message = ConstructMessageFromParts(data.parts, false, showTwitchGIFs);
|
||||||
|
|
||||||
// Highlight mentions
|
// Highlight mentions
|
||||||
const mentionRgx = new RegExp(`(^|\\s)@${youtubeUsername}(\\s|$)`, 'i');
|
const mentionRgx = new RegExp(`(^|\\s)@${youtubeUsername}(\\s|$)`, 'i');
|
||||||
@@ -1662,6 +1674,70 @@ function YouTubeSuperSticker(data) {
|
|||||||
AddMessageItem(instance);
|
AddMessageItem(instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function YouTubeJewelsGifted(data) {
|
||||||
|
if (!showYouTubeJewelsGifted)
|
||||||
|
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');
|
||||||
|
|
||||||
|
avatarDiv.style.width = 'auto';
|
||||||
|
|
||||||
|
// Set the text
|
||||||
|
const user = data.user.name;
|
||||||
|
const amount = data.jewelsAmount;
|
||||||
|
const jewelURL = data.url;
|
||||||
|
const jewelImage = `<img src="${jewelURL}" class="youtube-super-sticker"/>`;
|
||||||
|
|
||||||
|
avatarDiv.innerHTML = jewelImage;
|
||||||
|
titleDiv.innerHTML = `${user} gifted ${amount} Jewels`;
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
function YouTubeNewSponsor(data) {
|
function YouTubeNewSponsor(data) {
|
||||||
if (!showYouTubeMemberships)
|
if (!showYouTubeMemberships)
|
||||||
return;
|
return;
|
||||||
@@ -2408,7 +2484,7 @@ async function KickChatMessage(data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set the message data
|
// Set the message data
|
||||||
let message = ConstructMessageFromParts(data.parts);
|
let message = ConstructMessageFromParts(data.parts, false, showTwitchGIFs);
|
||||||
|
|
||||||
// Highlight mentions
|
// Highlight mentions
|
||||||
const mentionRgx = new RegExp(`(^|\\s)@${kickUsername}(\\s|$)`, 'i');
|
const mentionRgx = new RegExp(`(^|\\s)@${kickUsername}(\\s|$)`, 'i');
|
||||||
@@ -2795,7 +2871,6 @@ async function KickKicksGifted(data) {
|
|||||||
const giftNameSpan = instance.querySelector('#kick-gift-name');
|
const giftNameSpan = instance.querySelector('#kick-gift-name');
|
||||||
const stickerImg = instance.querySelector('.kick-gift-sticker');
|
const stickerImg = instance.querySelector('.kick-gift-sticker');
|
||||||
const amountDiv = instance.querySelector('#kick-gift-amount');
|
const amountDiv = instance.querySelector('#kick-gift-amount');
|
||||||
const messageDiv = instance.querySelector('#kick-gift-message');
|
|
||||||
|
|
||||||
avatarImg.src = await GetAvatar(data.sender.username, 'kick'); // Set the card header
|
avatarImg.src = await GetAvatar(data.sender.username, 'kick'); // Set the card header
|
||||||
usernameSpan.innerText = data.sender.username; // Set the username
|
usernameSpan.innerText = data.sender.username; // Set the username
|
||||||
@@ -2803,7 +2878,6 @@ async function KickKicksGifted(data) {
|
|||||||
giftNameSpan.innerText = data.gift.name; // Set the gift name
|
giftNameSpan.innerText = data.gift.name; // Set the gift name
|
||||||
stickerImg.src = `https://files.kick.com/kicks/gifts/${data.gift.gift_id.replace('_', '-')}.webp`; // Set the sticker image URL
|
stickerImg.src = `https://files.kick.com/kicks/gifts/${data.gift.gift_id.replace('_', '-')}.webp`; // Set the sticker image URL
|
||||||
amountDiv.innerText = data.gift.amount; // Set the number of gifts sent
|
amountDiv.innerText = data.gift.amount; // Set the number of gifts sent
|
||||||
messageDiv.innerText = data.message // Set the message
|
|
||||||
|
|
||||||
AddMessageItem(instance, null, 'kick', data.senderId);
|
AddMessageItem(instance, null, 'kick', data.senderId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -355,6 +355,14 @@
|
|||||||
"defaultValue": 2,
|
"defaultValue": 2,
|
||||||
"group": "Which Twitch messages do you want to see?"
|
"group": "Which Twitch messages do you want to see?"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "showTwitchGIFs",
|
||||||
|
"label": "GIFs",
|
||||||
|
"description": "Tier 2/3 subs only",
|
||||||
|
"type": "checkbox",
|
||||||
|
"defaultValue": true,
|
||||||
|
"group": "Which Twitch messages do you want to see?"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "showYouTubeMessages",
|
"id": "showYouTubeMessages",
|
||||||
"label": "Chat Messages",
|
"label": "Chat Messages",
|
||||||
@@ -379,6 +387,22 @@
|
|||||||
"defaultValue": true,
|
"defaultValue": true,
|
||||||
"group": "Which YouTube messages do you want to see?"
|
"group": "Which YouTube messages do you want to see?"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "showYouTubeJewelsGifted",
|
||||||
|
"label": "Jewels Gifted",
|
||||||
|
"description": "",
|
||||||
|
"type": "checkbox",
|
||||||
|
"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",
|
"id": "showYouTubeMemberships",
|
||||||
"label": "Memberships",
|
"label": "Memberships",
|
||||||
|
|||||||
@@ -282,7 +282,7 @@ li {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.kick-gift-sticker {
|
.kick-gift-sticker {
|
||||||
height: 5em;
|
height: 2.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#tiktok-gift-repeat-count {
|
#tiktok-gift-repeat-count {
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ let alertQueue = [];
|
|||||||
// GLOBAL VARS //
|
// GLOBAL VARS //
|
||||||
/////////////////
|
/////////////////
|
||||||
|
|
||||||
const kickPusherWsUrl = 'wss://ws-us2.pusher.com/app/32cbd69e4b950bf97679?protocol=7&client=js&version=7.6.0&flash=false';
|
|
||||||
let kickSubBadges = [];
|
let kickSubBadges = [];
|
||||||
|
|
||||||
|
|
||||||
@@ -89,6 +88,10 @@ const showYouTubeSuperChats = GetBooleanParam("showYouTubeSuperChats", true);
|
|||||||
const youtubeSuperChatAction = urlParams.get("youtubeSuperChatAction") || "";
|
const youtubeSuperChatAction = urlParams.get("youtubeSuperChatAction") || "";
|
||||||
const showYouTubeSuperStickers = GetBooleanParam("showYouTubeSuperStickers", true);
|
const showYouTubeSuperStickers = GetBooleanParam("showYouTubeSuperStickers", true);
|
||||||
const youtubeSuperStickerAction = urlParams.get("youtubeSuperStickerAction") || "";
|
const youtubeSuperStickerAction = urlParams.get("youtubeSuperStickerAction") || "";
|
||||||
|
const showYouTubeJewelsGifted = GetBooleanParam("showYouTubeJewelsGifted", true);
|
||||||
|
const youtubeJewelsGiftedAction = urlParams.get("youtubeJewelsGiftedAction") || "";
|
||||||
|
const showYouTubeSubscribers = GetBooleanParam("showYouTubeSubscribers", false);
|
||||||
|
const youtubeSubscriberAction = urlParams.get("youtubeSubscriberAction") || "";
|
||||||
const showYouTubeMemberships = GetBooleanParam("showYouTubeMemberships", true);
|
const showYouTubeMemberships = GetBooleanParam("showYouTubeMemberships", true);
|
||||||
const youtubeMembershipAction = urlParams.get("youtubeMembershipAction") || "";
|
const youtubeMembershipAction = urlParams.get("youtubeMembershipAction") || "";
|
||||||
|
|
||||||
@@ -247,6 +250,16 @@ client.on('YouTube.SuperSticker', (response) => {
|
|||||||
YouTubeSuperSticker(response.data);
|
YouTubeSuperSticker(response.data);
|
||||||
})
|
})
|
||||||
|
|
||||||
|
client.on('YouTube.JewelsGifted', (response) => {
|
||||||
|
console.debug(response.data);
|
||||||
|
YouTubeJewelsGifted(response.data);
|
||||||
|
})
|
||||||
|
|
||||||
|
client.on('YouTube.NewSubscriber', (response) => {
|
||||||
|
console.debug(response.data);
|
||||||
|
YouTubeNewSubscriber(response.data);
|
||||||
|
})
|
||||||
|
|
||||||
client.on('YouTube.NewSponsor', (response) => {
|
client.on('YouTube.NewSponsor', (response) => {
|
||||||
console.debug(response.data);
|
console.debug(response.data);
|
||||||
YouTubeNewSponsor(response.data);
|
YouTubeNewSponsor(response.data);
|
||||||
@@ -772,7 +785,7 @@ async function TwitchWatchStreak(data) {
|
|||||||
// Set the text
|
// Set the text
|
||||||
// TODO: Streamer.bot v1.0.5-alpha3 changed the data sent with this event, so for backwards compatibility we need to check for both the old and new properties
|
// TODO: Streamer.bot v1.0.5-alpha3 changed the data sent with this event, so for backwards compatibility we need to check for both the old and new properties
|
||||||
const displayName = data.displayName ?? data.user.name;
|
const displayName = data.displayName ?? data.user.name;
|
||||||
const watchStreak = data.watchStreak ?? data.streak_count;
|
const watchStreak = data.watchStreak ?? data.streak_count ?? data.streakCount;
|
||||||
|
|
||||||
UpdateAlertBox(
|
UpdateAlertBox(
|
||||||
'twitch',
|
'twitch',
|
||||||
@@ -827,6 +840,46 @@ function YouTubeSuperSticker(data) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function YouTubeJewelsGifted(data) {
|
||||||
|
if (!showYouTubeJewelsGifted)
|
||||||
|
return;
|
||||||
|
|
||||||
|
UpdateAlertBox(
|
||||||
|
'youtube',
|
||||||
|
data.url,
|
||||||
|
`${data.user.name}`,
|
||||||
|
`gifted ${data.jewelsAmount} Jewels`,
|
||||||
|
'',
|
||||||
|
data.user.name,
|
||||||
|
'',
|
||||||
|
youtubeJewelsGiftedAction,
|
||||||
|
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) {
|
function YouTubeNewSponsor(data) {
|
||||||
if (!showYouTubeMemberships)
|
if (!showYouTubeMemberships)
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -380,6 +380,40 @@
|
|||||||
"showIf": "showYouTubeSuperStickers",
|
"showIf": "showYouTubeSuperStickers",
|
||||||
"group": "Which YouTube alerts do you want to see?"
|
"group": "Which YouTube alerts do you want to see?"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "showYouTubeJewelsGifted",
|
||||||
|
"label": "Jewels Gifted",
|
||||||
|
"description": "",
|
||||||
|
"type": "checkbox",
|
||||||
|
"defaultValue": true,
|
||||||
|
"group": "Which YouTube alerts do you want to see?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "youtubeJewelsGiftedAction",
|
||||||
|
"label": "",
|
||||||
|
"description": "Also run this Streamer.bot Action",
|
||||||
|
"type": "sb-actions",
|
||||||
|
"defaultValue": "",
|
||||||
|
"showIf": "showYouTubeJewelsGifted",
|
||||||
|
"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",
|
"id": "showYouTubeMemberships",
|
||||||
"label": "Memberships",
|
"label": "Memberships",
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
gap: 0.5em;
|
gap: 0.5em;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
|
filter: drop-shadow(15px 15px 7px rgba(0, 0, 0, 1));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#album-art-container {
|
#album-art-container {
|
||||||
|
|||||||
Reference in New Issue
Block a user