Client-side messenger editor

change your friend text (client-side)

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

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

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @name         Client-side messenger editor
// @namespace    SơnARSENAL
// @version      2.0
// @description  change your friend text (client-side)
// @author       SơnARSENAL
// @match        https://discord.com/*
// @run-at       document-idle
// @grant        none
// ==/UserScript==

(() => {
    "use strict";

    console.log(
        "%c✏️ sửa tin nhắn client-side by SơnARSENAL",
        "color:#00ff88;font-size:18px;font-weight:bold"
    );

    let mouseTarget = null;

    // Nhớ element đang được rê chuột lên
    document.addEventListener("mousemove", e => {
        mouseTarget = e.target;
    }, true);

    // Bấm ~ để sửa tin nhắn đang rê chuột
    document.addEventListener("keydown", e => {

        // Không làm gì nếu đang gõ text
        if (
            e.target.tagName === "INPUT" ||
            e.target.tagName === "TEXTAREA" ||
            e.target.isContentEditable
        ) {
            return;
        }

        // ~ / `
        if (e.key !== "~" && e.code !== "Backquote") {
            return;
        }

        if (!mouseTarget) return;

        const message =
            mouseTarget.closest('[class*="messageContent"]') ||
            mouseTarget.closest('[class*="markup"]');

        if (!message) {
            console.log(
                "%c⚠️ Hãy đưa chuột lên một tin nhắn rồi bấm ~",
                "color:#ffaa00;font-weight:bold"
            );
            return;
        }

        e.preventDefault();
        e.stopPropagation();

        const oldText = message.innerText;

        const newText = prompt(
            "✏️ sửa tin nhắn client-side by SơnARSENAL",
            oldText
        );

        if (newText === null) return;

        message.innerText = newText;

        console.log(
            "%c✓ Đã sửa client-side",
            "color:#00ffff;font-weight:bold"
        );
    }, true);

    console.log(
        "%c🟢 READY | Rê chuột lên tin nhắn → bấm ~",
        "color:#00ff88;font-weight:bold"
    );
})();