Greasy Fork is available in English.

sarkyScript

Tracks and logs the actions of dgg users

Versión del día 3/4/2025. Echa un vistazo a la versión más reciente.

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

You will need to install an extension such as Tampermonkey to install this script.

Tendrás que instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Tendrás que instalar una extensión como Tampermonkey antes de poder instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name         sarkyScript
// @namespace    https://www.destiny.gg/
// @version      0.2
// @description  Tracks and logs the actions of dgg users
// @match        *://*.destiny.gg/*
// @run-at       document-start
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

  const menuIcon64 = "data:image/png;base64,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";
  let friends = [];
  let lastMsg = {};

  try {
    const storedFriends = localStorage.getItem("sark_friends");
    if (storedFriends) {
      friends = JSON.parse(storedFriends);
    }
  } catch (e) {
    console.error(e);
    friends = [];
  }


  function convertToJSON(prefixedData) {
    const firstSpaceIndex = prefixedData.indexOf(" ");
    const prefix = prefixedData.substring(0, firstSpaceIndex);
    const data = JSON.parse(prefixedData.substring(firstSpaceIndex + 1));

    return { prefix, data }
  }

  function addMenu() {
    const menuBtnContainer = document.createElement("a");
    menuBtnContainer.className = "chat-tool-btn";

    const menuBtn = document.createElement("img");
    menuBtn.className = "btn-icon";
    menuBtn.src = menuIcon64;

    const menuTitle = document.createElement("h1");
    menuTitle.textContent = "List of names to track";

    const menuDesc = document.createElement("p");
    menuDesc.textContent = "Seperate the names with commas using no spaces";


    menuBtn.addEventListener("click", function(e) {
      // console.log("clicked menu button");

      const menuDialog = document.createElement("dialog");
      menuDialog.style.cssText = "background: #36393f; width: 80%; height: 70%; position: relative;";
      document.body.appendChild(menuDialog);
      menuDialog.showModal();


      const friendsInput = document.createElement("textarea");
      friendsInput.style.cssText = "width: 100%; height: 100%; ";
      // console.log("sark_friends", friends);
      friendsInput.value = friends;

      friendsInput.addEventListener("input", function(e) {
        let friendsInputValue = friendsInput.value.toLowerCase();
        friends = friendsInputValue.split(",").map(f => f.trim()).filter(f => f);
        localStorage.setItem("sark_friends", JSON.stringify(friends));
      });

      const closeMenuBtn = document.createElement("button");
      closeMenuBtn.style.cssText = "background: red; padding: 2px;";
      closeMenuBtn.textContent = "X";
      closeMenuBtn.addEventListener("click", () => {
        menuDialog.close();
      });
      menuDialog.appendChild(closeMenuBtn);
      menuDialog.appendChild(menuTitle);
      menuDialog.appendChild(menuDesc);
      menuDialog.appendChild(friendsInput);

    });


    const chatToolsGroup = document.querySelector(".chat-tools-group");
    menuBtnContainer.appendChild(menuBtn);
    chatToolsGroup.appendChild(menuBtnContainer);
  }

  function addMessage(msg, color) {
    const chatLines = document.querySelector(".chat-lines");
    if (!chatLines) {
      console.error("couldnt find chat-lines");
    }
    const msgWords = msg.split(" ");

    const msgElement = document.createElement("div");
    msgElement.className = "msg-chat msg-user";
    msgElement.setAttribute("data-username", msgWords[0]);
    msgElement.style.cssText = `background: ${color}; color: white;`;
    if (msgWords[2]) {
      console.log("embed");
      const embedLink = document.createElement("a");
      embedLink.style.className = "externallink bookmarklink";
      embedLink.setAttribute("target", "_top");
      embedLink.href = "https://www.destiny.gg/bigscreen" + msgWords[2];
      embedLink.textContent = msgWords[2];
      msgElement.textContent = msgWords[0] + " " + msgWords[1] + " ";
      msgElement.appendChild(embedLink);
    } else {
      msgElement.textContent = msg;
    }

    chatLines.appendChild(msgElement);


    return true;
  }


  //
  //
  //
  //
  //

    console.log('WebSocket interceptor starting...');

    // Store the original WebSocket constructor
    const OriginalWebSocket = window.top.WebSocket;

    // Override the WebSocket constructor
    window.WebSocket = function(url, protocols) {
        console.log('WebSocket intercepted to:', url);

        // Create a WebSocket instance using the original constructor
        const socket = new OriginalWebSocket(url, protocols);

        // Add event listeners instead of overriding onmessage
        socket.addEventListener('message', function(event) {
          // console.log(event);
          if (event.origin == "wss://chat.destiny.gg") {
            try {
              let { prefix, data } = convertToJSON(event.data);

              if (!data.nick) return;
              if (friends.includes(data.nick.toLowerCase())) {
                if (prefix == "JOIN") {
                  addMessage(data.nick + " JOIN", "green");
                } else if (prefix == "QUIT") {
                  addMessage(data.nick + " QUIT", "red")
                } else if (prefix == "UPDATEUSER") {
                  // console.log("UPDATE USER!");
                  if (lastMsg.watching && data.watching) {
                    if (lastMsg.watching.id == data.watching.id) return;
                  }
                  if (data.watching === null) {
                    lastMsg = data;
                    return addMessage(data.nick + " closed embed", "#2d1b4b");
                  }
                  addMessage((data.nick + " opened " + "#" + data.watching.platform + "/" + data.watching.id), "#2d1b4b");
                  lastMsg = data
                }
              }
            } catch (e) {
              console.error(e);
            }
          }
        });

        return socket;
    };

    // Copy properties from original WebSocket to our overridden version
    for (const prop in OriginalWebSocket) {
        if (OriginalWebSocket.hasOwnProperty(prop)) {
            window.WebSocket[prop] = OriginalWebSocket[prop];
        }
    }

    window.WebSocket.prototype = OriginalWebSocket.prototype;

    window.addEventListener('load', function() {
        setTimeout(function() {
            addMenu();
        }, 2000);
    });

    console.log('WebSocket interceptor initialized');
})();