Greasy Fork is available in English.

Single Click To Copy Discord Message ID

Click any Discord message to copy its message ID

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

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

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Single Click To Copy Discord Message ID
// @namespace    https://greasyfork.org/users/1179204
// @version      0.0.1
// @description  Click any Discord message to copy its message ID
// @author       KaKa
// @match        https://discord.com/channels/*
// @license      MIT
// ==/UserScript==
(function () {
    'use strict';

    document.addEventListener('click', function (event) {
        const messageElement = event.target.closest('[id^="chat-messages-"]');
        if (!messageElement) return;

        const rawId = messageElement.id;
        if (!rawId.startsWith('chat-messages-')) return;

        const fullId = rawId.substring('chat-messages-'.length);
        const parts = fullId.split('-');
        const messageId = parts[1] || parts[0];

        navigator.clipboard.writeText(messageId).then(() => {
            messageElement.style.outline = '2px solid red';
            setTimeout(() =>{
                messageElement.style.outline = ''}, 500);
        }).catch(err => {
            console.error('Failed to copy message ID:', err);
        });
    });
})();