From 56f47d4cdb09a42043c8bcc2319163acb18ddf90 Mon Sep 17 00:00:00 2001 From: nuttylmao Date: Thu, 27 Mar 2025 06:27:13 +1100 Subject: [PATCH] Added Patreon support --- horizontal-chat/icons/platforms/patreon.png | Bin 0 -> 13276 bytes horizontal-chat/script.js | 23 +++++++++- horizontal-chat/settings/script.js | 1 - horizontal-chat/settings/settings.json | 8 ++++ horizontal-chat/style.css | 4 ++ multichat-overlay/icons/platforms/patreon.png | Bin 0 -> 13276 bytes multichat-overlay/script.js | 41 +++++++++++++++++- multichat-overlay/settings/script.js | 2 +- multichat-overlay/settings/settings.json | 8 ++++ multichat-overlay/style.css | 4 ++ 10 files changed, 85 insertions(+), 6 deletions(-) create mode 100644 horizontal-chat/icons/platforms/patreon.png create mode 100644 multichat-overlay/icons/platforms/patreon.png diff --git a/horizontal-chat/icons/platforms/patreon.png b/horizontal-chat/icons/platforms/patreon.png new file mode 100644 index 0000000000000000000000000000000000000000..22c97486cbf001513caccbc6c91286c4656e284f GIT binary patch literal 13276 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 { StreamElementsTip(response.data); }) +client.on('Patreon.PledgeCreated', (response) => { + console.debug(response.data); + PatreonPledgeCreated(response.data); +}) + ///////////////////// @@ -199,7 +205,7 @@ async function TwitchChatMessage(data) { return; // Don't post messages from users from the ignore list - if (ignoreUserList.includes(data.message.username)) + if (ignoreUserList.includes(data.message.username.toLowerCase())) return; // Get a reference to the template @@ -500,7 +506,7 @@ function YouTubeMessage(data) { return; // Don't post messages from users from the ignore list - if (ignoreUserList.includes(data.user.name)) + if (ignoreUserList.includes(data.user.name.toLowerCase())) return; // Get a reference to the template @@ -666,6 +672,19 @@ function StreamElementsTip(data) { ShowAlert(message, 'streamelements'); } +function PatreonPledgeCreated(data) { + if (!showPatreonMemberships) + return; + + const user = data.attributes.full_name; + const amount = (data.attributes.will_pay_amount_cents/100).toFixed(2); + const patreonIcon = ``; + + let message = `${patreonIcon} ${user} joined Patreon ($${amount})`; + + ShowAlert(message, 'patreon'); +} + ////////////////////// diff --git a/horizontal-chat/settings/script.js b/horizontal-chat/settings/script.js index 41f08d7..91c2789 100644 --- a/horizontal-chat/settings/script.js +++ b/horizontal-chat/settings/script.js @@ -1,5 +1,4 @@ let settingsContainer = document.getElementById('settings-container'); -//settingsContainer.src = `https://nuttylmao.github.io/widget-customizer?settingsJson=${window.location.href}/settings.json` settingsContainer.src = `../../widget-customizer?settingsJson=${window.location.href}/settings.json` console.log(settingsContainer.src); diff --git a/horizontal-chat/settings/settings.json b/horizontal-chat/settings/settings.json index 776d21c..a109855 100644 --- a/horizontal-chat/settings/settings.json +++ b/horizontal-chat/settings/settings.json @@ -207,6 +207,14 @@ "defaultValue": true, "group": "Which donation messages do you want to see?" }, + { + "id": "showPatreonMemberships", + "label": "Patreon Memberships", + "description": "", + "type": "checkbox", + "defaultValue": true, + "group": "Which donation messages do you want to see?" + }, { "id": "address", "label": "Address", diff --git a/horizontal-chat/style.css b/horizontal-chat/style.css index 0daa751..1ca9a86 100644 --- a/horizontal-chat/style.css +++ b/horizontal-chat/style.css @@ -241,6 +241,10 @@ li { background: linear-gradient(#263b8abf, #0a112abf) !important; } +.patreon { + background: linear-gradient(#c76633, #fd5e0a) !important; +} + /****************/ /** ANIMATIONS **/ /****************/ diff --git a/multichat-overlay/icons/platforms/patreon.png b/multichat-overlay/icons/platforms/patreon.png new file mode 100644 index 0000000000000000000000000000000000000000..22c97486cbf001513caccbc6c91286c4656e284f GIT binary patch literal 13276 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 { StreamElementsTip(response.data); }) +client.on('Patreon.PledgeCreated', (response) => { + console.debug(response.data); + PatreonPledgeCreated(response.data); +}) + /////////////////////// @@ -213,7 +219,7 @@ async function TwitchChatMessage(data) { return; // Don't post messages from users from the ignore list - if (ignoreUserList.includes(data.message.username)) + if (ignoreUserList.includes(data.message.username.toLowerCase())) return; // Get a reference to the template @@ -783,7 +789,7 @@ function YouTubeMessage(data) { return; // Don't post messages from users from the ignore list - if (ignoreUserList.includes(data.user.name)) + if (ignoreUserList.includes(data.user.name.toLowerCase())) return; // Get a reference to the template @@ -1097,6 +1103,37 @@ async function StreamElementsTip(data) { AddMessageItem(instance, data.id); } +function PatreonPledgeCreated(data) { + if (!showPatreonMemberships) + 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('patreon'); + + // Set the text + const user = data.attributes.full_name; + const amount = (data.attributes.will_pay_amount_cents/100).toFixed(2); + const patreonIcon = ``; + + titleDiv.innerHTML = `${patreonIcon} ${user} joined Patreon ($${amount})`; + + AddMessageItem(instance, data.id); +} + ////////////////////// diff --git a/multichat-overlay/settings/script.js b/multichat-overlay/settings/script.js index 548e43f..91c2789 100644 --- a/multichat-overlay/settings/script.js +++ b/multichat-overlay/settings/script.js @@ -1,5 +1,5 @@ let settingsContainer = document.getElementById('settings-container'); -settingsContainer.src = `https://widgets.nutty.gg/widget-customizer?settingsJson=${window.location.href}/settings.json` +settingsContainer.src = `../../widget-customizer?settingsJson=${window.location.href}/settings.json` console.log(settingsContainer.src); function reloadWidget(data) { diff --git a/multichat-overlay/settings/settings.json b/multichat-overlay/settings/settings.json index 97cc09f..5b9acc1 100644 --- a/multichat-overlay/settings/settings.json +++ b/multichat-overlay/settings/settings.json @@ -269,6 +269,14 @@ "defaultValue": true, "group": "Which donation messages do you want to see?" }, + { + "id": "showPatreonMemberships", + "label": "Patreon Memberships", + "description": "", + "type": "checkbox", + "defaultValue": true, + "group": "Which donation messages do you want to see?" + }, { "id": "address", "label": "Address", diff --git a/multichat-overlay/style.css b/multichat-overlay/style.css index b0eb3f1..6abd7d8 100644 --- a/multichat-overlay/style.css +++ b/multichat-overlay/style.css @@ -207,6 +207,10 @@ li { background: linear-gradient(#263b8abf, #0a112abf) !important; } +.patreon { + background: linear-gradient(#c76633, #fd5e0a) !important; +} + /****************/ /** ANIMATIONS **/ /****************/