summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2025-10-25 17:45:01 +0500
committerilotterytea <iltsu@alright.party>2025-10-25 17:45:01 +0500
commit0006ecef7d9f6865ef97c73698af544d8c898a1f (patch)
tree8387fcb109af79b105761201d53be6f1f92d9fd1 /scripts
parent59920e2fbbb1143ff257dce40f7657f8b1f5294e (diff)
feat: twitch badges
Diffstat (limited to 'scripts')
-rw-r--r--scripts/badges.js24
-rw-r--r--scripts/chat.js12
2 files changed, 36 insertions, 0 deletions
diff --git a/scripts/badges.js b/scripts/badges.js
new file mode 100644
index 0000000..3f8b8da
--- /dev/null
+++ b/scripts/badges.js
@@ -0,0 +1,24 @@
+function getTwitchBadges(name, badges) {
+ const bb = [];
+ fetch("https://api.ivr.fi/v2/twitch/badges/global")
+ .then((r) => r.json())
+ .then((b) => {
+ for (const badge of b) {
+ for (const version of badge["versions"]) {
+ badges[`${badge["set_id"]}/${version["id"]}`] = version["image_url_1x"];
+ }
+ }
+ addSystemMessage("Loaded Twitch global badges.");
+ });
+
+ fetch(`https://api.ivr.fi/v2/twitch/badges/channel?login=${name}`)
+ .then((r) => r.json())
+ .then((b) => {
+ for (const badge of b) {
+ for (const version of badge["versions"]) {
+ badges[`${badge["set_id"]}/${version["id"]}`] = version["image_url_1x"];
+ }
+ }
+ addSystemMessage("Loaded Twitch channel badges.");
+ });
+} \ No newline at end of file
diff --git a/scripts/chat.js b/scripts/chat.js
index 83d7445..2c0eaad 100644
--- a/scripts/chat.js
+++ b/scripts/chat.js
@@ -50,6 +50,18 @@ function addMessage(message) {
const elem = document.createElement("p");
elem.classList.add("message");
+ // badges
+ if ("badges" in message.tags && message.tags["badges"].length > 0) {
+ for (const b of message.tags["badges"].split(",")) {
+ if (b in badges) {
+ const badgeImg = document.createElement("img");
+ badgeImg.src = badges[b];
+ badgeImg.loading = 'lazy';
+ elem.append(badgeImg);
+ }
+ }
+ }
+
// username
const usernameElem = document.createElement("span");
elem.append(usernameElem);