Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Schwarze Liste
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description Blacklist for Stumblechat moderators
- // @author MeKLiN
- // @match https://stumblechat.com/room/*
- // @icon https://www.google.com/s2/favicons?sz=64&domain=stumblechat.com
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- // Store WebSocket globally
- let webSocket;
- // Store ban list in local storage
- let banList = [];
- // User map to keep track of users and their handles
- const userMap = new Map();
- // Override WebSocket constructor to intercept WebSocket creation
- const originalWebSocket = window.WebSocket;
- window.WebSocket = function(url, protocols) {
- // Create WebSocket connection
- webSocket = new originalWebSocket(url, protocols);
- // Event listener for receiving messages
- webSocket.addEventListener('message', event => {
- handleWebSocketMessage(event.data);
- });
- return webSocket;
- };
- // Function to handle WebSocket messages
- function handleWebSocketMessage(message) {
- const parsedMessage = JSON.parse(message);
- console.log('Received message:', parsedMessage);
- if (parsedMessage.stumble === "join") {
- const { handle, username } = parsedMessage;
- console.log('User joined:', username);
- // Add user to user map
- userMap.set(username, handle);
- // Check if the user is banned
- if (banList.includes(username)) {
- console.log('User is banned. Triggering ban...');
- // Trigger ban for the user
- triggerBan(handle);
- }
- }
- }
- // Function to trigger ban
- function triggerBan(handle) {
- console.log(`Banning user with handle: ${handle}`);
- // Send ban message
- const banRequest = JSON.stringify({ "stumble": "ban", "handle": handle });
- webSocket.send(banRequest);
- }
- // Function to send ban requests for banned users on join
- async function sendBanRequestsOnJoin() {
- console.log('Sending ban requests for banned users on join...');
- const userList = document.querySelectorAll('.bar .username');
- userList.forEach(user => {
- const username = user.textContent.trim();
- if (banList.includes(username)) {
- const handle = user.closest('.bar').getAttribute('user-id');
- if (handle) {
- console.log(`Banning user: ${username}`);
- // Trigger ban for the user
- triggerBan(handle);
- }
- }
- });
- }
- // Function to handle the file input and extract usernames
- function handleFileInput(event) {
- const file = event.target.files[0];
- if (file) {
- const reader = new FileReader();
- reader.onload = function(e) {
- const content = e.target.result;
- banList = content.split('\n').map(username => username.trim());
- // Save updated ban list in local storage
- localStorage.setItem("banList", JSON.stringify(banList));
- console.log('Ban list loaded:', banList);
- };
- reader.readAsText(file);
- }
- }
- // Function to create load file button
- function createLoadFileButton() {
- const loadFileButton = document.createElement('input');
- loadFileButton.type = 'file';
- loadFileButton.accept = '.txt';
- loadFileButton.style.position = 'fixed';
- loadFileButton.style.top = '10px';
- loadFileButton.style.right = '150px';
- loadFileButton.style.zIndex = '1000';
- loadFileButton.addEventListener('change', handleFileInput);
- document.body.appendChild(loadFileButton);
- }
- // Function to create activate button
- function createActivateButton() {
- const activateButton = document.createElement('button');
- activateButton.textContent = 'Activate';
- activateButton.style.position = 'fixed';
- activateButton.style.top = '10px';
- activateButton.style.right = '10px';
- activateButton.style.zIndex = '1000';
- activateButton.addEventListener('click', () => {
- // Send ban requests for banned users on join
- sendBanRequestsOnJoin();
- // Hide the activate button after clicking
- activateButton.style.display = 'none';
- });
- document.body.appendChild(activateButton);
- }
- // Load ban list from local storage
- const storedBanList = localStorage.getItem("banList");
- if (storedBanList) {
- banList = JSON.parse(storedBanList);
- console.log('Ban list loaded from local storage:', banList);
- }
- // Create load file button and activate button
- createLoadFileButton();
- createActivateButton();
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement