Guest User

scripted

a guest
Nov 5th, 2025
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.17 KB | None | 0 0
  1. // ==UserScript==
  2. // @name USERNAME BLACKLIST (Easy Toggle + On-Page Button)
  3. // @author DELAWARDE (et chatGPT)
  4. // @namespace https://onche.org
  5. // @version 0.6
  6. // @description Cache automatiquement les messages des pseudos sélectionnés par l'utilisateur, avec bouton de gestion rapide.
  7. // @match https://onche.org/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. (function() {
  12. 'use strict';
  13.  
  14. // --- CONFIGURATION ---
  15. let blacklistedUsers = JSON.parse(localStorage.getItem('blacklistedUsers') || '{}');
  16. const isBlacklistActive = true;
  17.  
  18. function saveBlacklist() {
  19. localStorage.setItem('blacklistedUsers', JSON.stringify(blacklistedUsers));
  20. }
  21.  
  22. // --- UI: Masquer un message ---
  23. function hideMessage(message, username) {
  24. const placeholder = document.createElement('div');
  25. placeholder.className = 'message-userblacklisted';
  26. placeholder.style.cssText = 'font-size: 14px; padding: 5px; background-color: #1c1e23; color: #f0f0f0; border: 1px solid #ccc; margin: 5px 0;';
  27.  
  28. const text = document.createElement('span');
  29. text.textContent = `Message caché de ${username}`;
  30. placeholder.appendChild(text);
  31.  
  32. const button = document.createElement('button');
  33. button.textContent = 'Voir le message';
  34. button.style.cssText = 'margin-left: 10px; padding: 2px 5px;';
  35. button.onclick = function() {
  36. message.style.display = '';
  37. placeholder.remove();
  38. };
  39. placeholder.appendChild(button);
  40.  
  41. message.style.display = 'none';
  42. message.parentNode.insertBefore(placeholder, message);
  43. }
  44.  
  45. // --- UI: Bouton blacklist toggle ---
  46. function addBlacklistButton(message, username) {
  47. const rightDiv = message.querySelector('.right');
  48. if (!rightDiv || rightDiv.querySelector('.mdi-block-helper')) return; // already added
  49.  
  50. const toggleBtn = document.createElement('div');
  51. toggleBtn.className = 'mdi mdi-block-helper';
  52. toggleBtn.title = blacklistedUsers[username] === 1 ? 'Retirer de la blacklist' : 'Ajouter à la blacklist';
  53. toggleBtn.style.cursor = 'pointer';
  54. toggleBtn.style.marginRight = '8px';
  55. toggleBtn.style.opacity = blacklistedUsers[username] === 1 ? '0.6' : '1.0';
  56.  
  57. toggleBtn.addEventListener('click', (e) => {
  58. e.stopPropagation();
  59. blacklistedUsers[username] = blacklistedUsers[username] === 1 ? 0 : 1;
  60. saveBlacklist();
  61. processUsernames();
  62. });
  63.  
  64. rightDiv.insertBefore(toggleBtn, rightDiv.firstChild);
  65. }
  66.  
  67. // --- Traitement principal ---
  68. function processUsernames() {
  69. if (!isBlacklistActive) return;
  70.  
  71. const messages = document.querySelectorAll('.message');
  72. messages.forEach(message => {
  73. const username = message.getAttribute('data-username');
  74. if (!username) return;
  75.  
  76. addBlacklistButton(message, username);
  77.  
  78. // Remove old placeholder if any
  79. const oldPlaceholder = message.previousSibling;
  80. if (oldPlaceholder && oldPlaceholder.classList?.contains('message-userblacklisted')) {
  81. oldPlaceholder.remove();
  82. }
  83.  
  84. // Show or hide message depending on blacklist
  85. if (blacklistedUsers[username] === 1) {
  86. hideMessage(message, username);
  87. } else {
  88. message.style.display = '';
  89. }
  90. });
  91. }
  92.  
  93. // --- Initialisation ---
  94. processUsernames();
  95.  
  96. // --- Observer les nouveaux messages ---
  97. const observer = new MutationObserver((mutations) => {
  98. mutations.forEach((mutation) => {
  99. if (mutation.addedNodes && mutation.addedNodes.length > 0) {
  100. mutation.addedNodes.forEach((node) => {
  101. if (node.nodeType === Node.ELEMENT_NODE && node.classList.contains('message')) {
  102. processUsernames();
  103. }
  104. });
  105. }
  106. });
  107. });
  108.  
  109. observer.observe(document.body, { childList: true, subtree: true });
  110. })();
Advertisement
Add Comment
Please, Sign In to add comment