Discord Devmode Copy ID Fix (Firefox)

Fix broken Discord channel/thread/message devmode "Copy ID" buttons in Firefox.

От 26.03.2025. Виж последната версия.

// ==UserScript==
// @name         Discord Devmode Copy ID Fix (Firefox)
// @description  Fix broken Discord channel/thread/message devmode "Copy ID" buttons in Firefox.
// @author       You
// @version      0.2
// @namespace    https://greasyfork.org/users/1376767
// @match        https://discord.com/*
// @grant        GM_setClipboard
// ==/UserScript==

(function() {
  'use strict';

  function addClickEventCopyId(node) {
    const match = node.id.match(/(\d+)$/); // id="channel-context-devmode-copy-id-123456" > extract end digits
    if (match) {
      const channelId = match[1];
      node.addEventListener(
        'click',
        function(event) { GM_setClipboard(channelId); },
        { once: true }
      );
    }
  }

  const observer = new MutationObserver(mutations => {
    mutations.forEach(mutation => { mutation.addedNodes.forEach(node => { if (node.nodeType === Node.ELEMENT_NODE) {
      // console.log(node);
      // Right click popup menu identifiable by <div class="clickTrapContainer_ trapClicks_">
      if (node.className && /clickTrapContainer_.*trapClicks_/.test(node.className)) {
        const menu = node;
        menu.querySelectorAll('[role="menuitem"][id*="-devmode-copy-id-"]').forEach(menuItem => {
            setTimeout(() => addClickEventCopyId(menuItem), 100);
        });
        // menu.querySelectorAll('[role="menuitem"]').forEach(menuItem => {
        //     console.log(menuItem)
        // });
      }
    }});});
  });

  observer.observe(document.body, { childList: true, subtree: true });
})();