From 73c9099e90e1a279f65567cfe751afdc11adcbb2 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Sun, 26 Oct 2025 00:03:54 +0500 Subject: feat: betterttv emotes --- scripts/chat.js | 9 ++++++++- scripts/emotes.js | 24 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 scripts/emotes.js (limited to 'scripts') diff --git a/scripts/chat.js b/scripts/chat.js index 2c0eaad..6f48a6b 100644 --- a/scripts/chat.js +++ b/scripts/chat.js @@ -72,7 +72,14 @@ function addMessage(message) { usernameElem.textContent = `${message.nick}:`; // message text - elem.innerHTML += ' ' + message.params[1]; + let msgWords = message.params[1].split(" "); + for (let i = 0; i < msgWords.length; i++) { + if (msgWords[i] in emotes) { + msgWords[i] = `${msgWords[i]}`; + } + } + + elem.innerHTML += ' ' + msgWords.join(" "); messages.append(elem); diff --git a/scripts/emotes.js b/scripts/emotes.js new file mode 100644 index 0000000..96bc103 --- /dev/null +++ b/scripts/emotes.js @@ -0,0 +1,24 @@ +function getBetterTTVChannelEmotes(twitchId, emotes) { + return fetch(`https://api.betterttv.net/3/cached/users/twitch/${twitchId}`) + .then((r) => r.json()) + .then((json) => { + if ("message" in json) { + addSystemMessage(`${json["message"]} (BetterTTV)`); + return; + } + + for (const e of [...json["channelEmotes"], ...json["sharedEmotes"]]) { + emotes[e["code"]] = `https://cdn.betterttv.net/emote/${e["id"]}/1x.webp`; + } + }); +} + +function getBetterTTVGlobalEmotes(emotes) { + return fetch(`https://api.betterttv.net/3/cached/emotes/global`) + .then((r) => r.json()) + .then((json) => { + for (const e of json) { + emotes[e["code"]] = `https://cdn.betterttv.net/emote/${e["id"]}/1x.webp`; + } + }); +} \ No newline at end of file -- cgit v1.2.3