Squeaky DGG Chat

Adds a squeaky sound when someone posts a message in DGG Chat. For more scripts see https://alexdavies8.github.io/userscripts/

// ==UserScript==
// @name            Squeaky DGG Chat
// @namespace       yuniDev.squeaky
// @version         2024-12-21
// @description     Adds a squeaky sound when someone posts a message in DGG Chat. For more scripts see https://alexdavies8.github.io/userscripts/
// @author          yuniDev
// @match           https://www.destiny.gg/embed/chat*
// @icon            data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @license         MIT
// ==/UserScript==

(function() {
    'use strict';

    const volume = 0.5;
    const maxPlayingAtOnce = 4;
    const base64Clip = "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ABBUhiSJISgS//uUZPgC5alQSMMZTyAxJ0RBACnCTij1JWel80CrHV8AAJpYHYeQOqBCJzZJJRk9sza17XW1tCYk12YQKKTkZuPhMGBsAmGAHF0VL3fBhkyOUnHxcI8XrKOLR5ZWIYWj5lZKZasRul+ViJ0/7DI8yMnef+ZE5fymZOhkZWwvyMQIdLOKY4gHFBZaKDQJ2AyD4JrYwy6ZdqSHsmYAlH3QgQIN//DzVdx9TctTcjTOpnHfskPUlOkGkav9wvq3Ko1Na/dQ9ct3zOZKFzF2O/tUHLncDyxwsMueNrbmCTVUSgLAaNDgRhFHjExBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqgAS1JDq7gQpAKjIFCpKFPNXim672UNLbA9LpOy70ChEJgwGwQC4gGxoiFJMZFzBOSEZGUOliFEhNHjDaBGoukqiJiU0eNkiNAXOnFUSFpk+wgRoF0kxEKSYTDo+JCcUEYgD5UiISYyfMG0CBGUOrKomXvYbQI1Fw8VFIqJR//uUZOSA8eMSxeohEHBIR2elAGyKTDEA1m8YZQErsRaAICG54WHxIKxQMDYeKkRKTGR8nJBWQEZQqRISUmMmyQnFBGUOFSIhJjJ8wTk5ARlDpYhRGTJ8wTkhGQFzhYhREpo8bJEZGQF6QlYIAAQN/iX/ll9Zppf/6aG/////6lzGUsrehkM/llml//UzhUm4HCWQBwwKyRGodOgiakpONFFHgaoNX9NqallitEyy1NX////KqVVQaun9///2iZZLTV/paP5/KVXVVw1VSVP////aallgmiq63/9VVctMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//uUZOyO9iBgPBtYSGIjDAX2BAJ/Cdwo5mekwMgAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV";
    const emotes = ["widepeepoHappy"]; // Leave blank to work with every message

    const clipBlob = new Blob([Uint8Array.from(atob(base64Clip), c => c.charCodeAt(0))], { type: 'audio/mp3' });
    const clipUrl = URL.createObjectURL(clipBlob);

    const audioQueue = [];
    for (let i = 0; i < maxPlayingAtOnce; i++) {
        let sound = new Audio(clipUrl);
        sound.volume = volume;
        sound.pause();
        audioQueue.push(sound);
    }

    function playSound() {
        const sound = audioQueue[0];
        sound.pause();
        sound.currentTime = 0;
        sound.play();
        audioQueue.splice(0, 1);
        audioQueue.push(sound);
    }

    function mutationCallback(mutationsList) {
        for (const mutation of mutationsList) {
            if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
                for (const addedNode of mutation.addedNodes) {
                    if (!emotes.length) playSound();
                    for (const emote of emotes) {
                        if (addedNode.querySelector(`.emote.${emote}`)) {
                            playSound();
                            break;
                        }
                    }
                }
            }
        }
    }

    const targetElement = document.getElementById("chat-win-main").querySelector(".chat-lines");

    if (targetElement) {
        const observer = new MutationObserver(mutationCallback);
        observer.observe(targetElement, { childList: true });
    }
})();