Greasy Fork is available in English.

ChatGPT زر نسخ رمز الدردشة

يخرج chatgpt.com أضف رسمًا متحركًا في الركن الأيمن السفلي من كتلة التعليمات البرمجية العلوية“نسخ الرمز”زر

اعتبارا من 21-09-2024. شاهد أحدث إصدار.

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

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

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

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

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

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

ستحتاج إلى تثبيت إضافة مثل Stylus لتثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتتمكن من تثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتثبيت هذا النمط.

(لدي بالفعل مثبت أنماط للمستخدم، دعني أقم بتثبيته!)

  1. // ==UserScript==
  2. // @name ChatGPT Chat Copy Code Button
  3. // @description Add a 'Copy Code' button to the bottom right hand of code blocks on chatgpt.com with animation
  4. // @name:zh-CN ChatGPT 聊天复制代码按钮
  5. // @description:zh-CN 在 chatgpt.com 上代码块的右下角添加一个带有动画的“复制代码”按钮
  6. // @name:ar ChatGPT زر نسخ رمز الدردشة
  7. // @description:ar يخرج chatgpt.com أضف رسمًا متحركًا في الركن الأيمن السفلي من كتلة التعليمات البرمجية العلوية“نسخ الرمز”زر
  8. // @name:bg ChatGPT Бутон за копиране на код за чат
  9. // @description:bg съществуват chatgpt.com Добавете анимация в долния десен ъгъл на горния кодов блок“Копирайте кода”бутон
  10. // @name:cs ChatGPT Tlačítko pro kopírování kódu chatu
  11. // @description:cs existovat chatgpt.com Přidejte animaci do pravého dolního rohu horního bloku kódu“Kopírovat kód”tlačítko
  12. // @name:da ChatGPT Chat kopi kode knap
  13. // @description:da eksistere chatgpt.com Tilføj en animation i nederste højre hjørne af den øverste kodeblok“Kopiér kode”knap
  14. // @name:de ChatGPT Schaltfläche zum Kopieren des Chat-Codes
  15. // @description:de existieren chatgpt.com Fügen Sie in der unteren rechten Ecke des oberen Codeblocks eine Animation hinzu“Code kopieren”Taste
  16. // @name:el ChatGPT Κουμπί αντιγραφής κωδικού συνομιλίας
  17. // @description:el υπάρχω chatgpt.com Προσθέστε μια κινούμενη εικόνα στην κάτω δεξιά γωνία του επάνω μπλοκ κώδικα“Αντιγραφή κωδικού”κουμπί
  18. // @name:en ChatGPT Chat copy code button
  19. // @description:en exist chatgpt.com Add an animation in the lower right corner of the upper code block“Copy code”button
  20. // @name:eo ChatGPT Babilejo kopia kodo butono
  21. // @description:eo ekzisti chatgpt.com Aldonu animacion en la malsupra dekstra angulo de la supra kodbloko“Kopiu kodon”butonon
  22. // @name:es ChatGPT Botón de copiar código de chat
  23. // @description:es existir chatgpt.com Agregue una animación en la esquina inferior derecha del bloque de código superior“Copiar código”botón
  24. // @name:fi ChatGPT Chat-koodin kopiointipainike
  25. // @description:fi olemassa chatgpt.com Lisää animaatio ylemmän koodilohkon oikeaan alakulmaan“Kopioi koodi”-painiketta
  26. // @name:fr ChatGPT Bouton de copie du code de chat
  27. // @description:fr exister chatgpt.com Ajoutez une animation dans le coin inférieur droit du bloc de code supérieur“Copier le code”bouton
  28. // @name:he ChatGPT לחצן העתקת קוד צ’אט
  29. // @description:he לְהִתְקַיֵם chatgpt.com הוסף אנימציה בפינה הימנית התחתונה של גוש הקוד העליון“העתק קוד”לַחְצָן
  30. // @name:hr ChatGPT Gumb za kopiranje koda za chat
  31. // @description:hr postojati chatgpt.com Dodajte animaciju u donji desni kut gornjeg bloka koda“Kopiraj kod”dugme
  32. // @name:hu ChatGPT Csevegési kódmásolás gomb
  33. // @description:hu létezik chatgpt.com Adjon hozzá animációt a felső kódblokk jobb alsó sarkába“Kód másolása”gomb
  34. // @name:id ChatGPT Tombol salin kode obrolan
  35. // @description:id ada chatgpt.com Tambahkan animasi di sudut kanan bawah blok kode atas“Salin kode”tombol
  36. // @name:it ChatGPT Pulsante copia codice chat
  37. // @description:it esistere chatgpt.com Aggiungi un’animazione nell’angolo in basso a destra del blocco di codice superiore“Copia il codice”pulsante
  38. // @name:ja ChatGPT チャットコードコピーボタン
  39. // @description:ja 存在する chatgpt.com 上部のコード ブロックの右下隅にアニメーションを追加します。“コードをコピーする”ボタン
  40. // @name:ka ChatGPT ჩეთის კოპირების კოდის ღილაკი
  41. // @description:ka არსებობს chatgpt.com დაამატეთ ანიმაცია ზედა კოდის ბლოკის ქვედა მარჯვენა კუთხეში“დააკოპირეთ კოდი”ღილაკი
  42. // @name:ko ChatGPT 채팅 코드 복사 버튼
  43. // @description:ko 존재하다 chatgpt.com 상단 코드 블록의 오른쪽 하단에 애니메이션을 추가합니다.“코드 복사”단추
  44. // @name:nl ChatGPT Knop voor chatkopieercode
  45. // @description:nl bestaan chatgpt.com Voeg een animatie toe in de rechter benedenhoek van het bovenste codeblok“Kopieer code”knop
  46. // @name:nb ChatGPT Chat kopi kode knapp
  47. // @description:nb eksistere chatgpt.com Legg til en animasjon i nedre høyre hjørne av den øvre kodeblokken“Kopier koden”knapp
  48. // @name:pl ChatGPT Przycisk kopiowania kodu czatu
  49. // @description:pl istnieć chatgpt.com Dodaj animację w prawym dolnym rogu górnego bloku kodu“Skopiuj kod”przycisk
  50. // @name:pt-BR ChatGPT Botão copiar código do bate-papo
  51. // @description:pt-BR existir chatgpt.com Adicione uma animação no canto inferior direito do bloco de código superior“Copiar código”botão
  52. // @name:ro ChatGPT Butonul de copiere a codului de chat
  53. // @description:ro exista chatgpt.com Adăugați o animație în colțul din dreapta jos al blocului de cod de sus“Copiați codul”buton
  54. // @name:ru ChatGPT Кнопка копирования кода в чате
  55. // @description:ru существовать chatgpt.com Добавьте анимацию в правом нижнем углу верхнего блока кода.“Скопировать код”кнопка
  56. // @name:sk ChatGPT Tlačidlo na kopírovanie kódu chatu
  57. // @description:sk existujú chatgpt.com Pridajte animáciu do pravého dolného rohu horného bloku kódu“Kopírovať kód”tlačidlo
  58. // @name:sr ChatGPT Дугме за копирање кода за ћаскање
  59. // @description:sr постоје chatgpt.com Додајте анимацију у доњи десни угао горњег кодног блока“Копирај код”дугме
  60. // @name:sv ChatGPT Knapp för chattkopiering
  61. // @description:sv existera chatgpt.com Lägg till en animation i det nedre högra hörnet av det övre kodblocket“Kopiera kod”knapp
  62. // @name:th ChatGPT ปุ่มคัดลอกรหัสแชท
  63. // @description:th มีอยู่ chatgpt.com เพิ่มภาพเคลื่อนไหวที่มุมขวาล่างของบล็อกโค้ดด้านบน“คัดลอกรหัส”ปุ่ม
  64. // @name:tr ChatGPT Sohbet kodunu kopyala düğmesi
  65. // @description:tr var olmak chatgpt.com Üst kod bloğunun sağ alt köşesine bir animasyon ekleyin“Kodu kopyala”düğme
  66. // @name:ug ChatGPT پاراڭلىشىش كودى كۇنۇپكىسى
  67. // @description:ug مەۋجۇت chatgpt.com ئۈستۈنكى كود توپىنىڭ ئوڭ ئوڭ بۇلۇڭىغا كارتون قوشۇڭ“كودنى كۆچۈرۈڭ”كۇنۇپكا
  68. // @name:uk ChatGPT Кнопка копіювання коду чату
  69. // @description:uk існують chatgpt.com Додайте анімацію в нижній правий кут верхнього блоку коду“Скопіюйте код”кнопку
  70. // @name:vi ChatGPT Nút sao chép mã trò chuyện
  71. // @description:vi hiện hữu chatgpt.com Thêm hình động ở góc dưới bên phải của khối mã phía trên“Sao chép mã”cái nút
  72. // @name:zh-TW ChatGPT 聊天複製代碼按鈕
  73. // @description:zh-TW 在 chatgpt.com 上代碼區塊的右下角添加一個帶有動畫的“複製程式碼”按鈕
  74. // @name:zh-HK ChatGPT 聊天複製代碼按鈕
  75. // @description:zh-HK 在 chatgpt.com 上代碼區塊的右下角添加一個帶有動畫的“複製程式碼”按鈕
  76. // @name:fr-CA ChatGPT Bouton de copie du code de chat
  77. // @description:fr-CA exister chatgpt.com Ajoutez une animation dans le coin inférieur droit du bloc de code supérieur“Copier le code”bouton
  78. // @match https://chatgpt.com/*
  79. // @match https://share.nezhagpt.cloud/*
  80. // @author YodaBets,人民的勤务员 <toniaiwanowskiskr47@gmail.com>
  81. // @namespace https://github.com/ChinaGodMan/UserScripts
  82. // @supportURL https://github.com/ChinaGodMan/UserScripts/issues
  83. // @homepageURL https://github.com/ChinaGodMan/UserScripts
  84. // @license MIT
  85. // @icon data:image/png;base64,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
  86. // @compatible chrome
  87. // @compatible firefox
  88. // @compatible edge
  89. // @compatible opera
  90. // @compatible safari
  91. // @version 1.0.0.0
  92. // @Created 2024-09-22 07:06:07
  93. // @modified 2024-09-22 07:06:07
  94. // ==/UserScript==
  95. (function () {
  96. 'use strict'
  97.  
  98. const copyToClipboard = (text, button) => {
  99. navigator.clipboard.writeText(text).then(() => {
  100. console.log('Copied code to clipboard')
  101. button.innerHTML = 'Copied!'
  102. setTimeout(() => {
  103. button.innerHTML = '' // Clear the text
  104. const svgIcon = getSVGIcon() // Re-add the SVG icon
  105. button.appendChild(svgIcon)
  106. }, 2000)
  107. }, (err) => {
  108. console.error('Failed to copy code: ', err)
  109. })
  110. }
  111.  
  112. const getSVGIcon = () => {
  113. const svgIcon = document.createElementNS('http://www.w3.org/2000/svg', 'svg')
  114. svgIcon.setAttribute('width', '24')
  115. svgIcon.setAttribute('height', '24')
  116. svgIcon.setAttribute('fill', 'none')
  117. svgIcon.setAttribute('viewBox', '0 0 24 24')
  118. svgIcon.classList.add('icon-sm')
  119.  
  120. const path = document.createElementNS('http://www.w3.org/2000/svg', 'path')
  121. path.setAttribute('fill', 'currentColor')
  122. path.setAttribute('fill-rule', 'evenodd')
  123. path.setAttribute('d', 'M7 5a3 3 0 0 1 3-3h9a3 3 0 0 1 3 3v9a3 3 0 0 1-3 3h-2v2a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3v-9a3 3 0 0 1 3-3h2zm2 2h5a3 3 0 0 1 3 3v5h2a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1h-9a1 1 0 0 0-1 1zM5 9a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h9a1 1 0 0 0 1-1v-9a1 1 0 0 0-1-1z')
  124. path.setAttribute('clip-rule', 'evenodd')
  125.  
  126. svgIcon.appendChild(path)
  127. return svgIcon
  128. }
  129.  
  130. const addButton = (elem) => {
  131. const button = document.createElement('button')
  132. const svgIcon = getSVGIcon()
  133. button.appendChild(svgIcon)
  134.  
  135. button.style.position = 'absolute'
  136. button.style.bottom = '8px'
  137. button.style.right = '8px'
  138. button.style.fontSize = '12px'
  139. button.style.padding = '4px 8px'
  140. button.style.border = '1px solid #ccc'
  141. button.style.borderRadius = '3px'
  142. button.style.background = 'rgba(0,0,0,0.1)'
  143. button.style.color = 'white'
  144. button.style.cursor = 'pointer'
  145. button.style.zIndex = '10'
  146. button.style.transition = 'background-color 0.3s ease'
  147.  
  148. button.addEventListener('click', (e) => {
  149. e.stopPropagation()
  150. copyToClipboard(elem.querySelector('code').textContent, button)
  151. })
  152.  
  153. button.addEventListener('mouseover', () => {
  154. button.style.backgroundColor = 'rgba(0,0,0,0.2)'
  155. })
  156.  
  157. button.addEventListener('mouseout', () => {
  158. button.style.backgroundColor = 'rgba(0,0,0,0.1)'
  159. })
  160.  
  161. elem.style.position = 'relative'
  162. elem.appendChild(button)
  163. }
  164.  
  165. const observeCodeBlocks = () => {
  166. const codeBlocks = document.querySelectorAll('pre:not(.copy-code-processed)')
  167. if (codeBlocks.length) {
  168. codeBlocks.forEach(block => {
  169.  
  170. addButton(block)
  171. block.classList.add('copy-code-processed')
  172. })
  173. }
  174. }
  175.  
  176. setTimeout(() => {
  177. const observer = new MutationObserver(observeCodeBlocks)
  178. observer.observe(document.body, { childList: true, subtree: true })
  179. observeCodeBlocks()
  180. }, 5000)
  181.  
  182. })()