diff options
| author | ilotterytea <iltsu@alright.party> | 2025-10-25 17:45:01 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-10-25 17:45:01 +0500 |
| commit | 0006ecef7d9f6865ef97c73698af544d8c898a1f (patch) | |
| tree | 8387fcb109af79b105761201d53be6f1f92d9fd1 /scripts | |
| parent | 59920e2fbbb1143ff257dce40f7657f8b1f5294e (diff) | |
feat: twitch badges
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/badges.js | 24 | ||||
| -rw-r--r-- | scripts/chat.js | 12 |
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); |
