GPT to Wechat

一些避免社死的伪装

  1. // ==UserScript==
  2. // @name GPT to Wechat
  3. // @description 一些避免社死的伪装
  4. // @match https://chat.openai.com/*
  5. // @copyright Chuxin Liang
  6. // @version 1.2.2
  7. // @license http://www.gnu.org/licenses/gpl-3.0.html
  8. // @namespace https://blog.becomingcelia.com
  9. // ==/UserScript==
  10.  
  11. // 设置 =====
  12.  
  13. // 显示在聊天列表名字下面的字
  14. var customMessage = "天地玄黄,宇宙洪荒";
  15.  
  16. // 背景图链接
  17. var customBackground = "https://images.unsplash.com/photo-1682241229580-e72acdf0eb6d?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1770&q=80";
  18.  
  19. // 修改图标
  20. // 是否启用 (true / false)
  21. var iconOption = true;
  22. // 自定义图标链接
  23. var customIcon = "https://cdn.jsdelivr.net/gh/liangchuxin/blog-imgs2/img/202304271042142.png";
  24.  
  25. // 自定义GPT头像
  26.  
  27. // 是否启用 (true / false)
  28. var avatarOption = true;
  29. // GPT3的
  30. var customAvatar3 = "https://cdn.jsdelivr.net/gh/liangchuxin/blog-imgs2/img/202304272103095.webp";
  31. // GPT4的
  32. var customAvatar4 = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRTkvnkIq8QQXT1fNWhHrND3QZCRFnJl-3OvQ&usqp=CAU";
  33.  
  34. // 左侧栏时间标识(today, yesterday, etc.)
  35. var timeLabel = false;
  36.  
  37. // 设置结束 ======
  38.  
  39. // Wechat styles
  40. var style = document.createElement('style');
  41. var basicStyle = '.flex.flex-grow.flex-col.gap-3 { margin-left: auto !important; padding: 8px 13px !important; border-radius: 5px !important; } .relative.flex { margin-left: auto !important; } .bg-gray-50 .relative.flex { margin-left: 0 !important; } .bg-gray-50 .flex.flex-col.relative.items-end { position: relative !important; top: unset !important; left: unset !important; bottom: unset !important; right: unset !important; } .flex.flex-col.relative.items-end { position: absolute !important; right: -51px !important; top: 20px !important; } .bg-gray-50 .flex.flex-grow.flex-col.gap-3 { width: auto !important; max-width: 100% !important; margin-right: auto !important; margin-left: 0 !important; } .markdown.prose.w-full.break-words p, .markdown.prose.w-full.break-words li, .flex.flex-col.items-start.gap-4.whitespace-pre-wrap.break-words { font-size: 14px !important; font-family: system-ui; } .text-base.m-auto, .group.w-full.text-gray-800, .h-full, .w-full.h-32.flex-shrink-0 { background: #111111 !important; } .group.w-full.text-gray-800 { border: none !important; } .relative.flex.flex-col.gap-1 { max-width: 100% !important; } .text-base.gap-4.m-auto { position: relative !important; } .absolute.bottom-0.left-0.w-full.border-t.pt-2 { width: 617px !important; } .relative.flex.h-full.flex-1.items-stretch { flex-direction: row-reverse !important; } .flex.flex-col.w-full.py-2.flex-grow.relative.border { background: transparent !important; border: 0 !important; box-shadow: none !important; } textarea.m-0.w-full.resize-none.border-0.bg-transparent.p-0.pr-7.pl-2 { font-size: 14px !important; font-family: system-ui !important; } textarea.m-0.w-full.resize-none.border-0.bg-transparent.p-0.pr-7.pl-2::placeholder { color: transparent !important; } .btn.btn-neutral.border-0 .flex.w-full.items-center.justify-center.gap-2 { font-size: 0 !important; } .flex.w-full.items-center svg.h-3.w-3 { margin-right: -7.5px !important; } .h-full.flex.ml-1.md.justify-center { margin-bottom: -4px !important; height: 54px px !important; } button.btn.relative.btn-neutral.border-0 { border: 0 !important; opacity: 0.3 !important; background: transparent !important; } .h-full.flex.ml-1.justify-center { margin-top: 1px !important; } div.overflow-hidden.w-full.h-full.relative.flex { height: 600px !important; width: 900px !important; margin: 0 auto !important; border: 1px solid !important; border-radius: 13px !important; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6), 0 22px 70px 4px rgba(0, 0, 0, 0.56), 0 0 0 1px rgba(0, 0, 0, 0) !important; } div#__next { display: flex !important; align-items: center !important; background: url(' + customBackground + ') !important; background-size: cover !important; } .flex-1.overflow-hidden > div.h-full > div { height: 100%; overflow-y: auto; width: 702px !important; } .flex.flex-col.items-center.text-sm { margin: 0 128px 0 14px !important; } form.stretch.mx-2.flex.flex-row.gap-3 { margin-bottom: 20px !important; } a.flex.py-3.px-3.items-center.gap-3.relative.rounded-md.group { border-radius: 0 !important; padding: 15px 1rem !important; font-size: 13.5px !important; font-family: system-ui !important; } a.flex.py-3.px-3.items-center.gap-3.relative.rounded-md.group.bg-gray-800 { padding-bottom: 34px !important; } a.flex.py-3.px-3.items-center.gap-3.relative.rounded-md.group.bg-gray-900 { padding-bottom: 34px !important; } .from-gray-900, .from-gray-800 { display: none !important; } a.flex.py-3.px-3.items-center.gap-3.transition-colors.duration-200.text-white.cursor-pointer.text-sm.rounded-md.border.flex-shrink-0 { height: 25px !important; border-radius: 3px !important; margin: 10px 0 !important; border: 0 !important; font-size: 12px !important; } a.flex.py-3.px-3.items-center.gap-3.relative.rounded-md.cursor-pointer.break-all.pr-14.group::after, a.flex.py-3.px-3.items-center.gap-3.relative.rounded-md.cursor-pointer.break-all.group::after { content: "' + customMessage + '"; position: absolute; left: 44px; bottom: 10px; font-size: 12px; } .text-base.gap-4.m-auto { padding-top: 1.25rem !important; padding-bottom: 1.25rem !important; } .bg-gray-500 .relative.flex span { width: 30px !important; } .flex-1.text-ellipsis.max-h-5.overflow-hidden.break-all.relative { padding-right: 36px !important; }';
  42. var darkStyle = '.bg-gray-50 .flex.flex-grow.flex-col.gap-3 { background-color: #2c2c2c !important; color: #eaeaea !important; } .absolute.bottom-0.left-0.w-full.border-t.pt-2 { background: #111111 !important; border-top: solid 1.5px #1d1d1d !important; } .flex.flex-col.w-full.py-2.flex-grow.relative.border { background: transparent !important; color: #e7e7e7 !important; border: 0 !important; } .px-3.pt-2.pb-3.text-center.text-xs.text-gray-600 span { color: #353435 !important; } div.overflow-hidden.w-full.h-full.relative.flex { border-color: #545454 #414141 #414141 #414141 !important; } a.flex.py-3.px-3.items-center.gap-3.relative.rounded-md.group { background-color: #191919 !important; } a.flex.py-3.px-3.items-center.gap-3.relative.rounded-md.group.bg-gray-800 { background-color: #302f30 !important; } a.flex.py-3.px-3.items-center.gap-3.transition-colors.duration-200.text-white.cursor-pointer.text-sm.rounded-md.border.flex-shrink-0 { background: #202020 !important; color: #646364 !important; } a.flex.py-3.px-3.items-center.gap-3.relative.rounded-md.cursor-pointer.break-all.pr-14.group::after, a.flex.py-3.px-3.items-center.gap-3.relative.rounded-md.cursor-pointer.break-all.group::after { color: #636263; } .text-base.m-auto, .group.w-full.text-gray-800, .h-full, .w-full.h-32.flex-shrink-0 { background: #111111 !important; } .flex.flex-grow.flex-col.gap-3 { background-color: #42b26a !important; color: #09110a !important; }';
  43. var brightStyle = '.bg-gray-50 .flex.flex-grow.flex-col.gap-3 { background-color: #ffffff !important; color: #191919 !important; } .absolute.bottom-0.left-0.w-full.border-t.pt-2 { background: #f3f3f3 !important; border-top: solid 1px #e0e0e0 !important; } .flex.flex-col.w-full.py-2.flex-grow.relative.border { background: transparent !important; color: #171717 !important; border: 0 !important; } .px-3.pt-2.pb-3.text-center.text-xs.text-gray-600 span { color: #aaaaaa !important; } div.overflow-hidden.w-full.h-full.relative.flex { border-color: #FCFCFC #F5F5F5 #F6F6F6 #F5F5F5 !important; } a.flex.py-3.px-3.items-center.gap-3.relative.rounded-md.group { background-color: #f7f7f7 !important; } a.flex.py-3.px-3.items-center.gap-3.relative.rounded-md.group.bg-gray-800 { background-color: #dedede !important; } a.flex.py-3.px-3.items-center.gap-3.transition-colors.duration-200.text-white.cursor-pointer.text-sm.rounded-md.border.flex-shrink-0 { background: #eaeaea !important; color: #a4a4a4 !important; } a.flex.py-3.px-3.items-center.gap-3.relative.rounded-md.cursor-pointer.break-all.pr-14.group::after, a.flex.py-3.px-3.items-center.gap-3.relative.rounded-md.cursor-pointer.break-all.group::after { color: #acacac; } .text-base.m-auto, .group.w-full.text-gray-800, .h-full, .w-full.h-32.flex-shrink-0 { background: #f3f3f3 !important; } .flex.flex-grow.flex-col.gap-3 { background-color: #a9ea7a !important; color: #11170c !important; } .flex-1.text-ellipsis.max-h-5.overflow-hidden.break-all.relative { color: #181818 !important; } .scrollbar-trigger.relative.h-full.w-full.flex-1.items-start { border-right: solid 1px #e0e0e0; } .group button.flex.w-full.items-center:hover, .group:where([data-headlessui-state~=open]) button { background-color: #dedede !important; } .grow.overflow-hidden.text-ellipsis.whitespace-nowrap.text-left.text-white { color: #181818; } svg.h-4.w-4 { color: #adadad !important; } nav.flex.h-full.w-full.flex-col.p-2 { background: #f7f7f7 !important; }';
  44. // style.setAttribute("id", "gpt-to-wechat");
  45. style.innerText = basicStyle;
  46. if (document.documentElement.classList.contains("dark")) {
  47. style.innerText += darkStyle;
  48. } else {
  49. style.innerText += brightStyle;
  50. }
  51.  
  52. if(!timeLabel) {style.innerText += " .sticky.top-0{display: none!important;}"}
  53. var head=document.getElementsByTagName('head')[0]; head.appendChild(style);
  54. head.appendChild(style);
  55.  
  56. var theme = document.documentElement.classList[0];
  57. let themeInterval = setInterval(function(){
  58. if (document.documentElement.classList[0] != theme) {
  59. window.location.reload();
  60. clearInterval(themeInterval);
  61. themeInterval = null;
  62. }
  63. }, 100);
  64.  
  65.  
  66.  
  67. // Change Favicon
  68. if (iconOption) {
  69. var link = document.createElement('link'),
  70. oldLink = document.getElementById('dynamic-favicon');
  71. link.id = 'dynamic-favicon';
  72. link.rel = 'shortcut icon';
  73. link.href = customIcon;
  74. if (oldLink) {
  75. document.head.removeChild(oldLink);
  76. }
  77. document.head.appendChild(link);
  78. }
  79.  
  80. // Change Profile Pic
  81. function isGpt4() {
  82. var divs = document.getElementsByTagName('div');
  83. var i;
  84.  
  85. for (i = 0; i < divs.length; i++) {
  86. var div = divs[i];
  87. var styles = window.getComputedStyle(div);
  88. var backgroundColor = styles.getPropertyValue('background-color');
  89.  
  90. if ((backgroundColor === 'rgb(0, 0, 0)' || backgroundColor === '#000' || backgroundColor === 'black') && div.tagName.toLowerCase() === 'div') {
  91. var children = div.children;
  92.  
  93. for (var j = 0; j < children.length; j++) {
  94. if (children[j].tagName.toLowerCase() === 'svg') {
  95. return true;
  96. }
  97. }
  98. }
  99. }
  100. return false;
  101. }
  102.  
  103.  
  104. function changeAvatar(version) {
  105. var customAvatar;
  106. if (version=="4") {
  107. customAvatar = customAvatar4;
  108. } else if (version=="3") {
  109. customAvatar = customAvatar3;
  110. }
  111. var avatars = document.querySelectorAll('.group.w-full.bg-gray-50 .text-base.gap-4 .flex.flex-col.relative.items-end');
  112. if (avatars.length === 0) {
  113. return;
  114. }
  115. for (var i = 0; i < avatars.length; i++) {
  116. if (avatars[i].hasChildNodes()) {
  117. for (var j = avatars[i].childNodes.length - 1; j >= 0; j--) {
  118. avatars[i].removeChild(avatars[i].childNodes[j]);
  119. }
  120. }
  121. var newAvatar = document.createElement("div");
  122. newAvatar.innerHTML = '<div class="relative flex"><span style="box-sizing: border-box; display: inline-block; overflow: hidden; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;"><span style="box-sizing: border-box; display: block; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;"><img alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2738%27%20height=%2738%27/%3e" style="display: block; max-width: 100%; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;"></span><img alt="Chuxin LIANG" srcset="' + customAvatar + '" src="' + customAvatar + '" decoding="async" data-nimg="intrinsic" class="rounded-sm" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%;"></span></div>';
  123. avatars[i].appendChild(newAvatar);
  124. }
  125.  
  126. }
  127.  
  128. (() => {
  129. let oldPushState = history.pushState;
  130. history.pushState = function pushState() {
  131. let ret = oldPushState.apply(this, arguments);
  132. window.dispatchEvent(new Event('pushstate'));
  133. window.dispatchEvent(new Event('locationchange'));
  134. return ret;
  135. };
  136. let oldReplaceState = history.replaceState;
  137. history.replaceState = function replaceState() {
  138. let ret = oldReplaceState.apply(this, arguments);
  139. window.dispatchEvent(new Event('replacestate'));
  140. window.dispatchEvent(new Event('locationchange'));
  141. return ret;
  142. };
  143. window.addEventListener('popstate', () => {
  144. window.dispatchEvent(new Event('locationchange'));
  145. });
  146. })();
  147.  
  148. let interval;
  149.  
  150. window.addEventListener('locationchange', function(){
  151. if (avatarOption) {
  152. clearInterval(interval);
  153. interval = null;
  154. setTimeout(function() {
  155. checkChange();
  156. }, 450); // 半秒内重新检测gpt版本,如果网页响应慢导致异常建议上调
  157. }
  158. })
  159. window.addEventListener('load', function() {
  160. if (avatarOption) {
  161. checkChange();
  162. }
  163. });
  164.  
  165.  
  166.  
  167. function checkChange() {
  168. var numHistory = 0;
  169. var avatarSet = false;
  170. var setValue;
  171. var stateSet = true;
  172. interval = setInterval(function() {
  173. var currentUrl = window.location.href;
  174. var nodes = document.querySelectorAll('.bg-gray-50 .flex.flex-grow.flex-col.gap-3');
  175. var nodesNum = nodes.length;
  176. if(nodesNum == 1) {
  177. var responseLength = document.querySelectorAll('.bg-gray-50 .flex.flex-grow.flex-col.gap-3 p')[0].innerHTML.length;
  178. if(responseLength > 1 ){
  179. numHistory = nodesNum;
  180. if (avatarSet == false) {
  181. setValue = isGpt4()?"4":"3";
  182. avatarSet = true;
  183. }
  184. if (stateSet == true) {
  185. changeAvatar(setValue);
  186. }
  187. } else {
  188. }
  189. } else {
  190. if (nodesNum !== numHistory) {
  191. numHistory = nodesNum;
  192. if (avatarSet == false) {
  193. setValue = isGpt4()?"4":"3";
  194. avatarSet = true;
  195. }
  196. if (stateSet == true) {
  197. changeAvatar(setValue);
  198. }
  199. }
  200. }
  201.  
  202. }, 100); // 每 0.1 秒替换头像
  203. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址