Discord Embed Sender

Send Embed as a member.

  1. // ==UserScript==
  2. // @name Discord Embed Sender
  3. // @description Send Embed as a member.
  4. // @version 1.0.3
  5. // @author roxasytb
  6. // @namespace https://roxasytb.repl.co/
  7. // @match https://*.discord.com/app
  8. // @match https://*.discord.com/channels/*
  9. // @match https://*.discord.com/login
  10. // @license MIT
  11. // @icon https://cdn.discordapp.com/emojis/1118860094575218708.webp?size=128
  12. // @grant none
  13. // ==/UserScript==
  14. (function() {
  15. function showEmbedGen() {
  16. document.querySelector("#app-mount > div.appAsidePanelWrapper__714a6 > div.notAppAsidePanel__9d124 > div.layerContainer_d5a653").innerHTML = `<div class="layerContainer_d5a653">
  17. <div class="backdrop__7e89b withLayer__1fe9d" style="opacity: 0.85; background: var(--black-500);"></div>
  18. <div class="layer_ad604d">
  19. <form>
  20. <div class="focusLock__10aa5" role="dialog" aria-labelledby=":r1i:" tabindex="-1" aria-modal="true">
  21. <div class="root_a28985 small__05f7b fullscreenOnMobile__96797 rootWithShadow__073a7" style="opacity: 1; transform: scale(1);">
  22. <div class="flex_f5fbb7 horizontal__992f6 justifyStart__42744 alignCenter__84269 noWrap__5c413 header__6d5ea" id=":r1i:" style="flex: 0 0 auto;">
  23. <div class="colorHeaderPrimary_fcac0c size24__367cf">Embed Sender</div>
  24. <button aria-label="Fermer" type="button" class="closeButton__7569f close__1080c button_afdfd9 lookBlank__7ca0a colorBrand_b2253e grow__4c8a4">
  25. <div class="contents_fb6220">
  26. <svg aria-hidden="true" role="img" class="closeIcon__5bab9" width="24" height="24" viewBox="0 0 24 24">
  27. <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>
  28. </svg>
  29. </div>
  30. </button>
  31. </div>
  32. <div class="content__764ce thin_b1c063 scrollerBase_dc3aa9" dir="ltr" style="overflow: hidden scroll; padding-right: 8px;">
  33. <div>
  34. <div class="container_eb78bd"><h2 class="h5__884a2 eyebrow_b7df6b defaultMarginh5__8514a" id=":r1o:">Text of Embed</h2>
  35. <div class="children__8990d"></div>
  36. </div>
  37. <div class="container_eb78bd">
  38. <div class="children__8990d">
  39. <div class="formItem_a0fe1a">
  40. <div class="inputWrapper__934f5">
  41. <div class="inputMaxLength__0fbc2">
  42. <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>
  43. <span id="89f7d89e-f080-4954-a15f-a27a80232890" class="hiddenVisually__06c3e">15&nbsp;caractères minimum.</span>
  44. <span id="01d2803d-0efc-48fc-b7a3-e35ca42528d9" class="hiddenVisually__06c3e">340&nbsp;caractères maximum.</span>
  45. <div class="maxLength_f4921c" aria-hidden="true">1000</div>
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. </div>
  51. <div class="container_eb78bd">
  52. <div class="children__8990d">
  53. <div class="formItem_a0fe1a">
  54. <h2 class="h5__884a2 eyebrow_b7df6b defaultMarginh5__8514a" id=":r1o:">Image URL</h2>
  55. <div class="inputWrapper__934f5">
  56. <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="">
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. <div class="container_eb78bd">
  62. <div class="children__8990d">
  63. <div class="formItem_a0fe1a">
  64. <h2 class="h5__884a2 eyebrow_b7df6b defaultMarginh5__8514a" id=":r1o:">Color (Hex)</h2>
  65. <div class="inputWrapper__934f5">
  66. <input class="inputDefault__80165 input_d266e7" name="Précision" placeholder="Color in hex" minlength="0" maxlength="1000" type="text" aria-labelledby=":r1o:" value="">
  67. </div>
  68. </div>
  69. </div>
  70. </div>
  71. </div>
  72. <div aria-hidden="true" style="position: absolute; pointer-events: none; min-height: 0px; min-width: 1px; flex: 0 0 auto; height: 0px;"></div>
  73. </div>
  74. <div class="flex_f5fbb7 horizontalReverse_dc209c justifyStart__42744 alignStretch_e239ef noWrap__5c413 footer__89240 footerSeparator__57d95" style="flex: 0 0 auto;">
  75. <button type="submit" class="button_afdfd9 lookFilled__19298 colorBrand_b2253e sizeMedium_c6fa98 grow__4c8a4">
  76. <div class="contents_fb6220">Send</div>
  77. </button>
  78. <button type="button" class="button_afdfd9 lookLink__93965 lowSaturationUnderline__95e71 colorPrimary__6ed40 sizeMedium_c6fa98 grow__4c8a4">
  79. <div class="contents_fb6220">Cancel</div>
  80. </button>
  81. </div>
  82. </div>
  83. </div>
  84. </form>
  85. </div>
  86. </div>`
  87. 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", (() => {
  88. document.querySelector("#app-mount > div.appAsidePanelWrapper__714a6 > div.notAppAsidePanel__9d124 > div.layerContainer_d5a653").innerHTML = ''
  89. }))
  90. document.querySelector("#\\:r1i\\: > button").addEventListener("click", (() => {
  91. document.querySelector("#app-mount > div.appAsidePanelWrapper__714a6 > div.notAppAsidePanel__9d124 > div.layerContainer_d5a653").innerHTML = ''
  92. }))
  93. 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", (() => {
  94. event.preventDefault();
  95. var embedTitle = document.querySelector(".scrollerBase_dc3aa9 > div:nth-child(1) > div:nth-child(2) > div > div > div > div > textarea").value
  96. var embedImage = document.querySelector(".scrollerBase_dc3aa9 > div:nth-child(1) > div:nth-child(3) > div > div > div > input").value
  97. var embedColor = document.querySelector(".scrollerBase_dc3aa9 > div:nth-child(1) > div:nth-child(4) > div > div > div > input").value
  98. 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();
  99. var content = `** ** ||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​|| _ _ _ _ _ _ _ _ https://embed-RoxasYTB.replit.app/?title=${escape(embedTitle)}&color=${escape(embedColor)}`
  100. fetch("https://discord.com/api/v9/channels/" + location.href.split("/")[5] + "/messages", {
  101. "headers": {
  102. "accept": "*/*",
  103. "authorization": auth,
  104. "content-type": "application/json",
  105. "Referrer-Policy": "strict-origin-when-cross-origin"
  106. },
  107. "body": `{"mobile_network_type":"unknown","content":"${content}"}`,
  108. "method": "POST"
  109. });
  110. document.querySelector("#app-mount > div.appAsidePanelWrapper__714a6 > div.notAppAsidePanel__9d124 > div.layerContainer_d5a653").innerHTML = '';
  111. }))
  112. }
  113.  
  114. var embedButton = document.createElement("div")
  115. embedButton.innerHTML = `<button aria-label="Send Embed" type="button" class="button_afdfd9 tags lookBlank__7ca0a colorBrand_b2253e grow__4c8a4">
  116. <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="
  117. position: relative;
  118. top: 5px;
  119. /* left: -76px; */
  120. "></div></div></button>`
  121. embedButton.addEventListener("click", (() => {
  122. showEmbedGen()
  123. }))
  124. embedButton.onmouseover = (() => {
  125. embedButton.style = "filter: brightness(150%);"
  126. })
  127. embedButton.onmouseout = (() => {
  128. embedButton.style = "filter: brightness(100%);"
  129. })
  130. setInterval(() => {
  131. if (document.querySelector(".buttons_ce5b56").innerHTML.indexOf(embedButton.innerHTML) == -1) {
  132. document.querySelector(".buttons_ce5b56").appendChild(embedButton)
  133. }
  134. })
  135.  
  136. })();