Discord Embed Sender

Send Embed as a member.

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name            Discord Embed Sender
// @description     Send Embed as a member.
// @version         1.0.3
// @author          roxasytb
// @namespace       https://roxasytb.repl.co/
// @match           https://*.discord.com/app
// @match           https://*.discord.com/channels/*
// @match           https://*.discord.com/login
// @license         MIT
// @icon            https://cdn.discordapp.com/emojis/1118860094575218708.webp?size=128
// @grant           none
// ==/UserScript==
(function() {
    function showEmbedGen() {
        document.querySelector("#app-mount > div.appAsidePanelWrapper__714a6 > div.notAppAsidePanel__9d124 > div.layerContainer_d5a653").innerHTML = `<div class="layerContainer_d5a653">
<div class="backdrop__7e89b withLayer__1fe9d" style="opacity: 0.85; background: var(--black-500);"></div>
<div class="layer_ad604d">
  <form>
    <div class="focusLock__10aa5" role="dialog" aria-labelledby=":r1i:" tabindex="-1" aria-modal="true">
      <div class="root_a28985 small__05f7b fullscreenOnMobile__96797 rootWithShadow__073a7" style="opacity: 1; transform: scale(1);">
        <div class="flex_f5fbb7 horizontal__992f6 justifyStart__42744 alignCenter__84269 noWrap__5c413 header__6d5ea" id=":r1i:" style="flex: 0 0 auto;">
          <div class="colorHeaderPrimary_fcac0c size24__367cf">Embed Sender</div>
          <button aria-label="Fermer" type="button" class="closeButton__7569f close__1080c button_afdfd9 lookBlank__7ca0a colorBrand_b2253e grow__4c8a4">
            <div class="contents_fb6220">
              <svg aria-hidden="true" role="img" class="closeIcon__5bab9" width="24" height="24" viewBox="0 0 24 24">
                <path fill="currentColor" d="M18.4 4L12 10.4L5.6 4L4 5.6L10.4 12L4 18.4L5.6 20L12 13.6L18.4 20L20 18.4L13.6 12L20 5.6L18.4 4Z"></path>
              </svg>
            </div>
          </button>
        </div>
        <div class="content__764ce thin_b1c063 scrollerBase_dc3aa9" dir="ltr" style="overflow: hidden scroll; padding-right: 8px;">
          <div>
            <div class="container_eb78bd"><h2 class="h5__884a2 eyebrow_b7df6b defaultMarginh5__8514a" id=":r1o:">Text of Embed</h2>
              <div class="children__8990d"></div>
            </div>
            <div class="container_eb78bd">
              <div class="children__8990d">
                <div class="formItem_a0fe1a">
                  <div class="inputWrapper__934f5">
                    <div class="inputMaxLength__0fbc2">
                      <textarea type="text" class="inputDefault__80165 input_d266e7 textArea__97e3f scrollbarDefault_fec5d4 scrollbar_d66c5e error__18f19" aria-labelledby=":r1m:" aria-describedby=":r1n: 01d2803d-0efc-48fc-b7a3-e35ca42528d9 89f7d89e-f080-4954-a15f-a27a80232890" aria-invalid="true" placeholder="Embed Content" minlength="15" maxlength="340" required="" rows="3" style="padding-right: 38.92px;"></textarea>
                      <span id="89f7d89e-f080-4954-a15f-a27a80232890" class="hiddenVisually__06c3e">15&nbsp;caractères minimum.</span>
                      <span id="01d2803d-0efc-48fc-b7a3-e35ca42528d9" class="hiddenVisually__06c3e">340&nbsp;caractères maximum.</span>
                      <div class="maxLength_f4921c" aria-hidden="true">1000</div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div class="container_eb78bd">
              <div class="children__8990d">
                <div class="formItem_a0fe1a">
                  <h2 class="h5__884a2 eyebrow_b7df6b defaultMarginh5__8514a" id=":r1o:">Image URL</h2>
                  <div class="inputWrapper__934f5">
                    <input class="inputDefault__80165 input_d266e7" name="Précision" placeholder="Image URL if you want." minlength="0" maxlength="1000" type="text" aria-labelledby=":r1o:" value="">
                  </div>
                </div>
              </div>
            </div>
            <div class="container_eb78bd">
              <div class="children__8990d">
                <div class="formItem_a0fe1a">
                  <h2 class="h5__884a2 eyebrow_b7df6b defaultMarginh5__8514a" id=":r1o:">Color (Hex)</h2>
                  <div class="inputWrapper__934f5">
                    <input class="inputDefault__80165 input_d266e7" name="Précision" placeholder="Color in hex" minlength="0" maxlength="1000" type="text" aria-labelledby=":r1o:" value="">
                  </div>
                </div>
              </div>
            </div>
          </div>
          <div aria-hidden="true" style="position: absolute; pointer-events: none; min-height: 0px; min-width: 1px; flex: 0 0 auto; height: 0px;"></div>
        </div>
        <div class="flex_f5fbb7 horizontalReverse_dc209c justifyStart__42744 alignStretch_e239ef noWrap__5c413 footer__89240 footerSeparator__57d95" style="flex: 0 0 auto;">
          <button type="submit" class="button_afdfd9 lookFilled__19298 colorBrand_b2253e sizeMedium_c6fa98 grow__4c8a4">
            <div class="contents_fb6220">Send</div>
          </button>
          <button type="button" class="button_afdfd9 lookLink__93965 lowSaturationUnderline__95e71 colorPrimary__6ed40 sizeMedium_c6fa98 grow__4c8a4">
            <div class="contents_fb6220">Cancel</div>
          </button>
        </div>
      </div>
    </div>
  </form>
</div>
</div>`
        document.querySelector("#app-mount > div.appAsidePanelWrapper__714a6 > div.notAppAsidePanel__9d124 > div.layerContainer_d5a653 > div > div.layer_ad604d > form > div > div > div.flex_f5fbb7.horizontalReverse_dc209c.justifyStart__42744.alignStretch_e239ef.noWrap__5c413.footer__89240.footerSeparator__57d95 > button.button_afdfd9.lookLink__93965.lowSaturationUnderline__95e71.colorPrimary__6ed40.sizeMedium_c6fa98.grow__4c8a4").addEventListener("click", (() => {
            document.querySelector("#app-mount > div.appAsidePanelWrapper__714a6 > div.notAppAsidePanel__9d124 > div.layerContainer_d5a653").innerHTML = ''
        }))
        document.querySelector("#\\:r1i\\: > button").addEventListener("click", (() => {
            document.querySelector("#app-mount > div.appAsidePanelWrapper__714a6 > div.notAppAsidePanel__9d124 > div.layerContainer_d5a653").innerHTML = ''
        }))
        document.querySelector("#app-mount > div.appAsidePanelWrapper__714a6 > div.notAppAsidePanel__9d124 > div:nth-child(4) > div > div.layer_ad604d > form > div > div > div.flex_f5fbb7.horizontalReverse_dc209c.justifyStart__42744.alignStretch_e239ef.noWrap__5c413.footer__89240.footerSeparator__57d95 > button.button_afdfd9.lookFilled__19298.colorBrand_b2253e.sizeMedium_c6fa98.grow__4c8a4").addEventListener("click", (() => {
            event.preventDefault();
            var embedTitle = document.querySelector(".scrollerBase_dc3aa9 > div:nth-child(1) > div:nth-child(2) > div > div > div > div > textarea").value
            var embedImage = document.querySelector(".scrollerBase_dc3aa9 > div:nth-child(1) > div:nth-child(3) > div > div > div > input").value
            var embedColor = document.querySelector(".scrollerBase_dc3aa9 > div:nth-child(1) > div:nth-child(4) > div > div > div > input").value
            var auth = (webpackChunkdiscord_app.push([[''], {},e => {m = [];for (let c in e.c) m.push(e.c[c])}]), m).find(m => m?.exports?.default?.getToken !== void 0).exports.default.getToken();
            var content = `** ** ||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​|| _ _ _ _ _ _ _ _ https://embed-RoxasYTB.replit.app/?title=${escape(embedTitle)}&color=${escape(embedColor)}`
            fetch("https://discord.com/api/v9/channels/" + location.href.split("/")[5] + "/messages", {
                "headers": {
                    "accept": "*/*",
                    "authorization": auth,
                    "content-type": "application/json",
                    "Referrer-Policy": "strict-origin-when-cross-origin"
                },
                "body": `{"mobile_network_type":"unknown","content":"${content}"}`,
                "method": "POST"
            });
            document.querySelector("#app-mount > div.appAsidePanelWrapper__714a6 > div.notAppAsidePanel__9d124 > div.layerContainer_d5a653").innerHTML = '';
        }))
    }

    var embedButton = document.createElement("div")
    embedButton.innerHTML = `<button aria-label="Send Embed" type="button" class="button_afdfd9 tags lookBlank__7ca0a colorBrand_b2253e grow__4c8a4">
<div class="contents_fb6220 button_f0455c button__55e53"><div class="buttonWrapper__69593" style="opacity: 1; transform: none;"><img id="image0" width="24" height="24" x="0" y="0" src="data:image/png;base64,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 rkJggg==" style="
  position: relative;
  top: 5px;
  /* left: -76px; */
"></div></div></button>`
    embedButton.addEventListener("click", (() => {
        showEmbedGen()
    }))
    embedButton.onmouseover = (() => {
        embedButton.style = "filter: brightness(150%);"
    })
    embedButton.onmouseout = (() => {
        embedButton.style = "filter: brightness(100%);"
    })
    setInterval(() => {
        if (document.querySelector(".buttons_ce5b56").innerHTML.indexOf(embedButton.innerHTML) == -1) {
            document.querySelector(".buttons_ce5b56").appendChild(embedButton)
        }
    })

})();