Skriptit / randomuter.js

JavaScript-koodinpätkä randomuter.js toimii randomi.fi -palvelun chathuoneissa siten, että hiljentää tietyn sanan tai merkkijonon sisältävät viestit muuttamalla niiden tekstikoon ja korkeuden jotakuinkin niin pieneksi kuin mahdollista. Näin voit halutessasi lukea viestit copypastettamalla ne tekstieditoriin, mutta ne eivät häiritse chattaustasi. Myös käyttäjänimen perusteella voi hiljentää niin, että hiljennyslista säilyy selaimen välimuistityhjennyksistä huolimatta. Toimii käytännöllisesti esimerkiksi Tampermonkeyn, Violentmonkeyn, Wildmonkeyn tai muun käyttäjäskriptienhallintaselainlisäosan kanssa.

Ensimmäisen raakileen bugi korjattu 29.3.2026, eli tämä versio 1.01 myös oikeasti hiljentää nimimerkit eikä vain lupaa tehdä niin. Skriptistä on myös toinen versio (alempana) johon on lisätty myös emojien poisto-ominaisuus.

Yleisluontoinen neuvo käyttäjäskriptejä koskien: käyttäjäskriptit varsinkin satunnaisemmasta lähteestä voivat sisältää haittakoodia, joten kannattaa copypastettaa ne tekoälylle tai parille ja kysyä, löytävätkö ne haittakoodia seasta.

// ==UserScript==
// @name         randomuter.js
// @version      1.01
// @description  Hiljentää randomi.fi-chatissa halutut rivit
// @match        https://randomi.fi/*
// ==/UserScript==

(function () {
    'use strict';
    const HILJENNETYT_SANAT =
    ['älä _ muuta _ tätä',





// ITSE MUOKATTAVA ALUE ALKAA

// HILJENNETTÄVÄT SANAT:
// Vinkki: Usein riittää osa sanasta ('neeke') ja usein
// kannattaa lisätä välilyönti sanan eteen tai taakse.
// Esimerkiksi 'isäs' sensuroisi myös sanan 'lisäsi'
// sisältävät (eli lähtökohtaisesti asialliset) rivit, mutta
// ' isäs' ei niitä sensuroi.

'faijas',
'neeke',
'mutsis',
' isäs',

// HILJENNETTÄVÄT KÄYTTÄJÄNIMET:
// Ohje: Laita käyttäjänimet muodossa ' - Käyttäjänimi: '

' - Lautaveeti: ',
' - Häirikkö: ',

// ITSE MUOKATTAVA ALUE LOPPUU





    'älä _ tätäkään _ muuta'];

    const regex = new RegExp(HILJENNETYT_SANAT.join('|'), 'i');

    function hiljennaRivi(elementti) {
        if (regex.test(elementti.textContent)) {
            elementti.style.fontSize = '1px';
            elementti.style.lineHeight = '1px';
            elementti.style.overflow = 'hidden';
            elementti.style.userSelect = 'none';
        }
    }

    function tarkistaKaikkiRivit() {
        document.querySelectorAll('li.chat-line.oldline')
            .forEach(hiljennaRivi);
    }

    const observer = new MutationObserver((mutations) => {
        for (const mutation of mutations) {
            for (const solmu of mutation.addedNodes) {
                if (solmu.nodeType !== Node.ELEMENT_NODE) continue;

                if (
                    solmu.matches &&
                    solmu.matches('li.chat-line.oldline')
                ) {
                    hiljennaRivi(solmu);
                }

                solmu.querySelectorAll?.('li.chat-line.oldline')
                    .forEach(hiljennaRivi);
            }
        }
    });

    observer.observe(document.body, {
        childList: true,
        subtree: true
    });

    tarkistaKaikkiRivit();

})();


Jos haluat lisäksi emojitkin pois, ota allaoleva randomuterturbo.js käyttöön alkuperäisen tilalle:

// ==UserScript==
// @name         randomuterturbo.js
// @version      1.02
// @description  Hiljentää randomi.fi-chatissa emojit ja halutut rivit
// @match        https://randomi.fi/*
// ==/UserScript==

// VAIHDA ARVO 'k' ARVOKSI 'e' JOS HALUAT EMOJIT PÄÄLLE:
const POISTA_EMOJIT = 'k';
// VAIHDA ALLE '×':N TILALLE '' tai ' ' JOS ET HALUA
// KORVAAVAA MERKKIÄ EMOJEILLE:
const EMOJIN_KORVAAVA_MERKKI = '×';

(function () {
    'use strict';
    const HILJENNETYT_SANAT =
    ['älä _ muuta _ tätä',





// ITSE MUOKATTAVA ALUE ALKAA

// HILJENNETTÄVÄT SANAT:
// Vinkki: Usein riittää osa sanasta ('neeke') ja usein
// kannattaa lisätä välilyönti sanan eteen tai taakse.
// Esimerkiksi 'isäs' sensuroisi myös sanan 'lisäsi'
// sisältävät (eli lähtökohtaisesti asialliset) rivit, mutta
// ' isäs' ei niitä sensuroi.

'faijas',
'neeke',
'mutsis',
' isäs',

// HILJENNETTÄVÄT KÄYTTÄJÄNIMET:
// Ohje: Laita käyttäjänimet muodossa ' - Käyttäjänimi: '

' - Lautaveeti: ',
' - Häirikkö: ',

// ITSE MUOKATTAVA ALUE LOPPUU





    'älä _ tätäkään _ muuta'];

function poistaEmojit(elementti) {
    if (POISTA_EMOJIT !== 'k') return;
    elementti.childNodes.forEach(solmu => {
        if (solmu.nodeType === Node.TEXT_NODE) {
            solmu.textContent = solmu.textContent.replace(/\p{Extended_Pictographic}/gu, EMOJIN_KORVAAVA_MERKKI);
        }
    });
}

    const regex = new RegExp(HILJENNETYT_SANAT.join('|'), 'i');

function hiljennaRivi(elementti) {
    if (regex.test(elementti.textContent)) {
        elementti.style.fontSize = '1px';
        elementti.style.lineHeight = '1px';
        elementti.style.overflow = 'hidden';
        elementti.style.userSelect = 'none';
    }
    poistaEmojit(elementti);
}

    function tarkistaKaikkiRivit() {
        document.querySelectorAll('li.chat-line.oldline')
            .forEach(hiljennaRivi);
    }

    const observer = new MutationObserver((mutations) => {
        for (const mutation of mutations) {
            for (const solmu of mutation.addedNodes) {
                if (solmu.nodeType !== Node.ELEMENT_NODE) continue;

                if (
                    solmu.matches &&
                    solmu.matches('li.chat-line.oldline')
                ) {
                    hiljennaRivi(solmu);
                }

                solmu.querySelectorAll?.('li.chat-line.oldline')
                    .forEach(hiljennaRivi);
            }
        }
    });

    observer.observe(document.body, {
        childList: true,
        subtree: true
    });

    tarkistaKaikkiRivit();

})();