runescape classic chat censor and cache modification. this censor is semi-intelligent and can detect similar looking symbols and spacing.
$ npm install @2003scape/rsc-censor # -g for CLI program
rsc-censor <command>
Commands:
rsc-censor censor <archive> <message> censor message using filters in
archive
rsc-censor dump-json <archive> dump JSON files of each censor
section
rsc-censor pack-json <archive> <files..> encode and compress JSON files into
filter archive
Options:
--help Show help [boolean]
--version Show version number [boolean]
$ rsc-censor censor filter2.jag "you suck"
const Censor = require('./src'); const fs = require('fs'); const censor = new Censor(); censor.loadArchive(fs.readFileSync('./filter2.jag')); console.log(censor.censorMessage('hey you suck! visit dogs.com')) // hey you ****! visit ******** censor.badWords = censor.badWords.filter(({ word }) => !/suc/i.test(word)); censor.populateBuffers(); console.log(censor.censorMessage('hey you suck! visit dogs.com')) // hey you suck! visit ******** fs.writeFileSync('./filter3.jag', censor.toArchive());
create a new censor instance.
array of profanities.
[ { word: 'breast', // this allows "abreast" and "breastplate", but not "breast" ignore: [ { prefix: 'a', postfix: null }, { prefix: null, postfix: 'p' } ] } ]
array of webiste hostnames.
[ { word: 'aol', // allows for "gaols" but not "go aol" ignore: [ { prefix: 'g', postfix: 's' } // ... ] } ]
array of TLDs.
[ { word: 'com', type: 3 } ]
array of word fragments. these seem to be used to fix the censor when it's greedy and asterisks too many characters.
load a filter jag archive buffer.
apply changes to internal properties to the filter instance.
return a censored string.
return a filter jag archive.
Copyright 2019 2003Scape Team
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.