c.ai Truth Revealer

Reveal the truth about c.ai by mocking the new promotion, premium subscription, and making the button even more annoying and shiny with new text "Pay us for nothing!".

  1. // ==UserScript==
  2. // @name c.ai Truth Revealer
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0
  5. // @description Reveal the truth about c.ai by mocking the new promotion, premium subscription, and making the button even more annoying and shiny with new text "Pay us for nothing!".
  6. // @author Mr005K vs ChatGPT 4o
  7. // @match https://old.character.ai/*
  8. // @license MIT
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // Function to modify the promotional element
  16. function modifyPromoElement() {
  17. const promoElement = document.querySelector('div[style*="min-width: 400px; min-height: 50px; height: fit-content; background: linear-gradient(0deg, rgb(48, 49, 54), rgb(48, 49, 54)); margin-top: 8px; margin-bottom: 8px;"]');
  18. if (promoElement) {
  19. promoElement.innerHTML = `
  20. <div style="flex-direction: column; display: flex; justify-content: center; align-items: center; background: linear-gradient(90.07deg, rgba(255, 0, 0, 0.2) -2.91%, rgba(255, 255, 0, 0.2) 12.76%, rgba(0, 255, 0, 0.12) 85.46%, rgba(0, 0, 255, 0.12) 98.53%); padding: 10px; height: 100%;">
  21. <div style="height: 100%; width: 95%; gap: 8px; display: flex; flex-wrap: wrap;">
  22. <div style="font-size: 16px; display: flex; flex-wrap: wrap; gap: 8px;">
  23. <span style="font-weight: 500; text-align: center; display: flex; flex-direction: row; gap: 6px; align-items: center; color: white;">
  24. <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="#FF69B4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" style="color: rgb(255, 105, 180);">
  25. <path d="M208 512a24.84 24.84 0 01-23.34-16l-39.84-103.6a16.06 16.06 0 00-9.19-9.19L32 343.34a25 25 0 010-46.68l103.6-39.84a16.06 16.06 0 009.19-9.19L184.66 144a25 25 0 0146.68 0l39.84 103.6a16.06 16.06 0 009.19 9.19l103 39.63a25.49 25.49 0 0116.63 24.1 24.82 24.82 0 01-16 22.82l-103.6 39.84a16.06 16.06 0 00-9.19 9.19L231.34 496A24.84 24.84 0 01208 512zm66.85-254.84zM88 176a14.67 14.67 0 01-13.69-9.4l-16.86-43.84a7.28 7.28 0 00-4.21-4.21L9.4 101.69a14.67 14.67 0 010-27.38l43.84-16.86a7.31 7.31 0 004.21-4.21L74.16 9.79A15 15 0 0186.23.11a14.67 14.67 0 0115.46 9.29l16.86 43.84a7.31 7.31 0 004.21 4.21l43.84 16.86a14.67 14.67 0 010 27.38l-43.84 16.86a7.28 7.28 0 00-4.21 4.21l-16.86 43.84A14.67 14.67 0 0188 176zm312 80a16 16 0 01-14.93-10.26l-22.84-59.37a8 8 0 00-4.6-4.6l-59.37-22.84a16 16 0 010-29.86l59.37-22.84a8 8 0 004.6-4.6l22.67-58.95a16.45 16.45 0 0113.17-10.57 16 16 0 0116.86 10.15l22.84 59.37a8 8 0 004.6 4.6l59.37 22.84a16 16 0 010 29.86l-59.37 22.84a8 8 0 00-4.6 4.6l-22.84 59.37A16 16 0 01400 256z"></path>
  26. </svg>
  27. Welcome to the new downgraded and enshittified Character.AI!
  28. </span>
  29. <div style="display: flex; flex-wrap: wrap;">
  30. <button style="cursor: pointer; text-transform: none; padding: 6px 14px; border-radius: 18px; margin: 0px; min-width: 0px; display: flex; box-shadow: 0px 0px; background-color: #FF69B4; color: white;">
  31. Try the Enshittification Now!
  32. </button>
  33. </div>
  34. </div>
  35. </div>
  36. </div>
  37. `;
  38. } else {
  39. console.log('Promotional element not found');
  40. }
  41. }
  42.  
  43. // Function to modify the modal dialog element
  44. function modifyModalElement() {
  45. const modalElement = document.querySelector('.modal-content');
  46.  
  47. if (modalElement) {
  48. modalElement.innerHTML = `
  49. <div class="modal-body" style="padding: 16px 24px; background: linear-gradient(90deg, rgba(255, 182, 193, 0.2), rgba(173, 216, 230, 0.2)); border: 5px solid pink;">
  50. <div style="display: flex; justify-content: space-between;">
  51. <img src="https://character.ai/static/logo-variants/text-logo-plus-dark.png" style="width: 300px; margin: 10px 0px; transform: rotate(-15deg);">
  52. <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" height="18" width="18" xmlns="http://www.w3.org/2000/svg" style="cursor: pointer; position: absolute; top: 10px; right: 10px; transform: rotate(45deg); --darkreader-inline-fill: currentColor; --darkreader-inline-stroke: currentColor;" data-darkreader-inline-fill="" data-darkreader-inline-stroke="">
  53. <path fill="none" d="M0 0h24v24H0z"></path>
  54. <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path>
  55. </svg>
  56. </div>
  57. <div style="font-size: 20px; margin-bottom: 8px; color: red;">
  58. <span class="premium-color">Supercharge</span> your hilariously downgraded experience!
  59. </div>
  60. <ul style="list-style: none; padding-left: 0px;">
  61. <li style="display: flex; align-items: center; font-size: 16px; color: blue;">
  62. <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="20" width="20" xmlns="http://www.w3.org/2000/svg" style="margin-left: 0px; margin-right: 8px; transform: scale(1.5); --darkreader-inline-fill: currentColor; --darkreader-inline-stroke: currentColor;" data-darkreader-inline-fill="" data-darkreader-inline-stroke="">
  63. <path d="M256 48C141.6 48 48 141.6 48 256s93.6 208 208 208 208-93.6 208-208S370.4 48 256 48zm-42.7 318.9L106.7 260.3l29.9-29.9 76.8 76.8 162.1-162.1 29.9 29.9-192.1 191.9z"></path>
  64. </svg>
  65. <div><span class="premium-color">Priority Access</span> - skip the hilariously empty waiting room</div>
  66. </li>
  67. <li style="display: flex; align-items: center; font-size: 16px; color: blue;">
  68. <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="20" width="20" xmlns="http://www.w3.org/2000/svg" style="margin-left: 0px; margin-right: 8px; transform: scale(1.5); --darkreader-inline-fill: currentColor; --darkreader-inline-stroke: currentColor;" data-darkreader-inline-fill="" data-darkreader-inline-stroke="">
  69. <path d="M256 48C141.6 48 48 141.6 48 256s93.6 208 208 208 208-93.6 208-208S370.4 48 256 48zm-42.7 318.9L106.7 260.3l29.9-29.9 76.8 76.8 162.1-162.1 29.9 29.9-192.1 191.9z"></path>
  70. </svg>
  71. <span class="premium-color">Faster Response Times</span> - because you need it!
  72. </li>
  73. <li style="display: flex; align-items: center; font-size: 16px; color: blue;">
  74. <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="20" width="20" xmlns="http://www.w3.org/2000/svg" style="margin-left: 0px; margin-right: 8px; transform: scale(1.5); --darkreader-inline-fill: currentColor; --darkreader-inline-stroke: currentColor;" data-darkreader-inline-fill="" data-darkreader-inline-stroke="">
  75. <path d="M256 48C141.6 48 48 141.6 48 256s93.6 208 208 208 208-93.6 208-208S370.4 48 256 48zm-42.7 318.9L106.7 260.3l29.9-29.9 76.8 76.8 162.1-162.1 29.9 29.9-192.1 191.9z"></path>
  76. </svg>
  77. <div><span class="premium-color">Early Access</span> to broken features</div>
  78. </li>
  79. <li style="display: flex; align-items: center; font-size: 16px; color: blue;">
  80. <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="20" width="20" xmlns="http://www.w3.org/2000/svg" style="margin-left: 0px; margin-right: 8px; transform: scale(1.5); --darkreader-inline-fill: currentColor; --darkreader-inline-stroke: currentColor;" data-darkreader-inline-fill="" data-darkreader-inline-stroke="">
  81. <path d="M256 48C141.6 48 48 141.6 48 256s93.6 208 208 208 208-93.6 208-208S370.4 48 256 48zm-42.7 318.9L106.7 260.3l29.9-29.9 76.8 76.8 162.1-162.1 29.9 29.9-192.1 191.9z"></path>
  82. </svg>
  83. <div><span class="premium-color">c.ai+ Community</span> - Join the circus!</div>
  84. </li>
  85. <li style="display: flex; align-items: center; font-size: 16px; color: blue;">
  86. <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="20" width="20" xmlns="http://www.w3.org/2000/svg" style="margin-left: 0px; margin-right: 8px; transform: scale(1.5); --darkreader-inline-fill: currentColor; --darkreader-inline-stroke: currentColor;" data-darkreader-inline-fill="" data-darkreader-inline-stroke="">
  87. <path d="M256 48C141.6 48 48 141.6 48 256s93.6 208 208 208 208-93.6 208-208S370.4 48 256 48zm-42.7 318.9L106.7 260.3l29.9-29.9 76.8 76.8 162.1-162.1 29.9 29.9-192.1 191.9z"></path>
  88. </svg>
  89. <div><div class="darkreader plus-subscriber-badge" aria-label="c.ai+ Subscriber"><div>c.ai<span class="premium-color">+</span></div></div> - Proudly supporting enshittification!</div>
  90. </li>
  91. </ul>
  92. </div>
  93. <div class="modal-footer" style="padding: 16px 24px; background: linear-gradient(90deg, rgba(255, 182, 193, 0.2), rgba(173, 216, 230, 0.2)); border-top: 5px solid pink;">
  94. <div style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
  95. <div style="display: flex;">
  96. <div class="price" style="font-size: 28px; color: red;">$9<span style="font-size: 16px;">.99</span></div>
  97. <div class="price-month" style="align-self: flex-end; color: red;">/mo</div>
  98. </div>
  99. <button type="button" class="btn btn-primary" style="height: 42px; background-color: pink; border: 2px solid red;">Subscribe</button>
  100. </div>
  101. <div style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 40px;">
  102. <div>Logged in as: Mr005kp</div>
  103. <div><a style="cursor: pointer; color: red;">Logout</a></div>
  104. </div>
  105. </div>
  106. `;
  107. } else {
  108. console.log('Modal element not found');
  109. }
  110. }
  111.  
  112. // Function to modify the button
  113. function modifyButton() {
  114. const buttonElement = document.querySelector('.shine-btn.dark');
  115.  
  116. if (buttonElement) {
  117. buttonElement.innerHTML = `
  118. <div>Pay us for <span>nothing!</span></div>
  119. `;
  120. buttonElement.style.background = 'linear-gradient(45deg, #FF69B4, #FFD700, #00FF00, #1E90FF)';
  121. buttonElement.style.color = '#FFFFFF';
  122. buttonElement.style.fontWeight = 'bold';
  123. buttonElement.style.animation = 'shine 1s infinite alternate';
  124. buttonElement.style.borderRadius = '10px';
  125. buttonElement.style.boxShadow = '0 0 10px #FFD700, 0 0 20px #FF69B4, 0 0 30px #1E90FF';
  126.  
  127. // Add CSS for shine animation
  128. const style = document.createElement('style');
  129. style.innerHTML = `
  130. @keyframes shine {
  131. 0% { transform: scale(1); }
  132. 100% { transform: scale(1.1); }
  133. }
  134. `;
  135. document.head.appendChild(style);
  136. } else {
  137. console.log('Button element not found');
  138. }
  139. }
  140.  
  141. // Run the functions immediately and then every 3 seconds
  142. modifyPromoElement();
  143. modifyModalElement();
  144. modifyButton();
  145. setInterval(modifyPromoElement, 3000);
  146. setInterval(modifyModalElement, 3000);
  147. setInterval(modifyButton, 3000);
  148. })();