Fetching emotesets whenever they are updated can be relatively simple. We might use this if we were listing available emoticons and always want to keep them up to date.

Add a quick extension that watches for a change and fetches the new emotes from get emoticons by set.

twitch.chat.on('USERSTATE', checkEmotesets);
twitch.chat.on('GLOBALUSERSTATE', checkEmotesets);

let lastEmotesets;

async function checkEmotesets (msg) {
    // look for new emotesets
    if (!Array.isArray(msg.tags.emoteSets)) {

    const emotesets = msg.tags.emoteSets.join(',');

    // emotesets haven't changed
    if (lastEmotesets === emotesets) {
    lastEmotesets = emotesets;

    // fetch
    const result = await twitch.api.kraken('/chat/emoticon_images', {
        data: { emotesets }

    // emit result

function handleEmotesets (emoticonSets) {
    // updated emotes arrived!

Tip: Emote urls are https://static-cdn.jtvnw.net/emoticons/v1/${id}/1.0 where ${id} is your character code id.