Quillbot Premium Unlocker

Unlocks Quillbot Premium features with improved stability and compatibility

  1. // ==UserScript==
  2. // @name Quillbot Premium Unlocker
  3. // @namespace quillbot.taozhiyu.gitee.io
  4. // @version 0.3.3
  5. // @description Unlocks Quillbot Premium features with improved stability and compatibility
  6. // @author longkidkoolstar
  7. // @match https://quillbot.com/*
  8. // @icon https://quillbot.com/favicon.png
  9. // @require https://greatest.deepsurf.us/scripts/455943-ajaxhooker/code/ajaxHooker.js?version=1124435
  10. // @run-at document-start
  11. // @grant none
  12. // @license none
  13. // ==/UserScript==
  14. /* global ajaxHooker*/
  15. (function() {
  16. 'use strict';
  17. // Configuration
  18. const DEBUG = false; // Enable for additional console logging
  19. // Intercept API responses to enable premium features
  20. ajaxHooker.hook(request => {
  21. if (request.url.endsWith('get-account-details')) {
  22. // Log interception if debug mode enabled
  23. DEBUG && console.log('[QuillbotUnlocker] Intercepting account details request');
  24. request.response = response => {
  25. const responseData = JSON.parse(response.responseText);
  26. const accountData = "data" in responseData ? responseData.data : responseData;
  27. // Set premium status flags
  28. accountData.profile.accepted_premium_modes_tnc = true;
  29. accountData.profile.premium = true;
  30. // Update response with modified data
  31. response.responseText = JSON.stringify("data" in responseData ?
  32. (responseData.data = accountData, responseData) : accountData);
  33. DEBUG && console.log('[QuillbotUnlocker] Premium status enabled successfully');
  34. };
  35. }
  36. });
  37. // Initialize notification UI after page loads
  38. window.addEventListener('load', initializeNotification);
  39. // Create and display the community notification
  40. function initializeNotification() {
  41. const notificationElement = createNotificationElement();
  42. document.body.appendChild(notificationElement);
  43. DEBUG && console.log('[QuillbotUnlocker] Notification displayed');
  44. }
  45. // Helper function to create notification UI
  46. function createNotificationElement() {
  47. // Create container
  48. const popup = document.createElement('div');
  49. popup.style.position = 'fixed';
  50. popup.style.bottom = '20px';
  51. popup.style.right = '20px';
  52. popup.style.padding = '15px';
  53. popup.style.backgroundColor = '#f9f9f9';
  54. popup.style.boxShadow = '0px 4px 6px rgba(0, 0, 0, 0.1)';
  55. popup.style.border = '1px solid #ccc';
  56. popup.style.borderRadius = '8px';
  57. popup.style.zIndex = '10000';
  58. popup.style.fontFamily = 'Arial, sans-serif';
  59. popup.style.color = '#333';
  60. popup.style.textAlign = 'center';
  61. // Add message
  62. const message = document.createElement('p');
  63. message.textContent = 'Join our Discord community for discussions, support, and additional resources, including User-Scripts not posted on Greasyfork!';
  64. message.style.margin = '0 0 10px';
  65. // Add link
  66. const link = document.createElement('a');
  67. link.href = 'https://discord.gg/JrweGzdjwA';
  68. link.textContent = 'Join Discord';
  69. link.style.color = '#007bff';
  70. link.style.textDecoration = 'none';
  71. link.style.fontWeight = 'bold';
  72. link.target = '_blank';
  73. link.addEventListener('mouseover', () => link.style.textDecoration = 'underline');
  74. link.addEventListener('mouseout', () => link.style.textDecoration = 'none');
  75. // Add close button
  76. const closeButton = document.createElement('button');
  77. closeButton.textContent = '✖';
  78. closeButton.style.position = 'absolute';
  79. closeButton.style.top = '5px';
  80. closeButton.style.right = '5px';
  81. closeButton.style.background = 'none';
  82. closeButton.style.border = 'none';
  83. closeButton.style.cursor = 'pointer';
  84. closeButton.style.fontSize = '16px';
  85. closeButton.style.color = '#333';
  86. closeButton.addEventListener('click', () => {
  87. document.body.removeChild(popup);
  88. });
  89. // Assemble elements
  90. popup.appendChild(message);
  91. popup.appendChild(link);
  92. popup.appendChild(closeButton);
  93. return popup;
  94. }
  95. })();