Bots Home
|
Create an App
Censor or Replace Words
Author:
gargoyle1
Description
Source Code
Launch Bot
Current Users
Created by:
Gargoyle1
/** * Bot: Censore or Replace Words * Version: 1.0 * Author: gargoyle1 * Date: 07.01.16 */ var silenced = []; var words = []; var replace = []; var message; var cmsg; var rnd; var w = 0; var r = 0; var s = -1; cb.settings_choices = [ {name: 'wordlist', type:'str', label:'Forbidden word(s)! (Separate with space)', defaultValue:''}, {name: 'replacelist', type:'str', label:'Word(s) for replace! (Separate with space)', defaultValue:'', required:false}, {name: 'label', type:'str', label:'Note for censor bar', defaultValue:':censor', required:false }, {name: 'silencemsg', type:'str', label:'Message for silenced user', defaultValue:'You are silenced!', required:false }, {name:'mode', type:'choice', label:'Censore, silence or replace words (randomly)?', choice1:'censor', choice2:'replace', choice3:'random', choice4: 'silence', defaultValue:'censor', required:false}, {name:'who', type:'choice', label:'Who should be censored?', choice1:'all', choice2:'greys', defaultValue:'all', required:false}, {name:'nogreys', type:'choice', label:'Silence all greys?', choice1:'yes', choice2:'no', defaultValue:'no', required:false}, {name:'mod', type:'choice', label:'Mods can use commands?', choice1:'yes', choice2:'no', defaultValue:'no', required:false}, ]; /* 95843guy from stackoverflow simple case insensitive replace */ String.prototype.replaceAll = function(strReplace, strWith) { var reg = new RegExp(strReplace, 'ig'); return this.replace(reg, strWith); }; cb.onEnter(function(user) { if (!user['has_tokens'] || cb.settings.who == 'all') { cb.sendNotice('Censor Bot by gargoyle1 is running!', user['user'], '', '', 'bold'); cb.sendNotice('Posts containing following words will be censored!', user['user'], '', '', 'bold'); var notice = 'Forbidden words: '; for (var i=0; i<w; i++) { notice += words[i]; if (i<(w-1)) { notice += ', '; } } notice += '!'; cb.sendNotice(notice, user['user'], '', '', ''); } }); cb.onMessage(function (msg) { if ((!msg['has_tokens'] || cb.settings.who == 'all') && msg['user'] != cb.room_slug) { var message = msg['m']; if (cb.settings.mode == 'random') { for (var i=0; i<w; i++) { rnd = Math.floor(Math.random() * r); message = message.replaceAll(words[i],replace[rnd]); } } else if (cb.settings.mode == 'censor') { for (var i=0; i<w; i++) { message = message.replaceAll(words[i],cb.settings.label); } } else if (cb.settings.mode == 'replace'){ for (var i=0; i<w; i++) { message = message.replaceAll(words[i],replace[i]); } } else if (cb.settings.mode == 'silence'){ for (var i=0; i<w; i++) { if (message.search(words[i]) != -1) { msg['X-Spam'] = true; message = 'Silenced for forbidden word(s)!' } } } var n = silenced.indexOf(msg['user']); if ((n != -1) || (!msg['has_tokens'] && cb.settings.nogreys == 'yes')) { msg['X-Spam'] = true; message = cb.settings.silencemsg; } msg['m'] = message; } if (msg['m'].indexOf("!") == 0 && (msg['user'] == cb.room_slug || (cb.settings.mod == 'yes' && msg['is_mod']))) { msg['m'] = msg['m'].toLowerCase(); msg['m'] = msg['m'].trim(); var cmsg = msg['m'].split(' '); if (msg['m'] == '!c') { msg['X-Spam'] = true; cb.sendNotice('!list = shows you the actual list of all forbidden words and their replacement \n !showall = shows everybody the list of forbidden words \n !mode censor/replace/random/silence = change replacement mode \n !user all/greys = change user group being censored \n !nogreys = silence/unsilence all greys \n !mod = change change setting, if mod can use commands or not \n !censor x = change word or emoticon for the censor replacement \n !addword x (#) = add single word to forbidden words list (to position #) \n!addreplace x (#) = add single word to replacing words list (to position #) \n !words x y z = set new forbidden words \n !replace x y z = set new replacing words \n !pew user = user get silenced \n !unpew user = user get unsilenced \n !pewed = show all silenced user', msg['user'], '', '', ''); } if (cmsg[0] == '!words') { msg['X-Spam'] = true; var l = cmsg.length - 1; for (var i=0; i<l;i++) { words[i] = cmsg[i+1]; } w = words.length; fillwords(); } if (cmsg[0] == '!addword') { msg['X-Spam'] = true; if (cmsg[2] == undefined) { words[w] = cmsg[1]; } else if (cmsg[2] > 0 && cmsg[2] <= (w+1)) { var i = cmsg[2] -1; words[i] = cmsg[1]; } w = words.length; fillwords(); } if (cmsg[0] == '!replace') { msg['X-Spam'] = true; var l = cmsg.length - 1; for (var i=0; i<l;i++) { replace[i] = cmsg[i+1]; } r = replace.length; fillwords(); } if (cmsg[0] == '!addreplace') { msg['X-Spam'] = true; if (cmsg[2] == undefined) { replace[r] = cmsg[1]; r = r+1; } else if (cmsg[2] > 0 && cmsg[2] <= (w+1)) { var i = cmsg[2] -1; replace[i] = cmsg[1]; } } if (cmsg[0] == '!censor') { msg['X-Spam'] = true; cb.settings.label = cmsg[1]; cb.settings.label += ' '; cb.sendNotice('Censorbar is set to ' + cb.settings.label + '!', msg['user'], '', '', ''); } if (cmsg[0] == '!mode') { msg['X-Spam'] = true; if (cmsg[1] == 'censor' || 'replace' || 'random' || 'silence') { cb.settings.mode = cmsg[1]; cb.sendNotice('Replacement mode is set to ' + cb.settings.mode + '!', msg['user'], '', '', ''); } } if (cmsg[0] == '!user') { msg['X-Spam'] = true; if (cmsg[1] == 'all' || 'greys') { cb.settings.who = cmsg[1]; cb.sendNotice('Censored user group is set to ' + cb.settings.who + '!', msg['user'], '', '', ''); } } if (cmsg[0] == '!mod' && msg['user'] == cb.room_slug) { msg['X-Spam'] = true; if (cb.settings.mod == 'no') { cb.settings.mod = 'yes'; } else { cb.settings.mod = 'no'; } cb.sendNotice('Mods can use commands: ' + cb.settings.mod, msg['user'], '', '', ''); } if (cmsg[0] == '!showall') { msg['X-Spam'] = true; cb.sendNotice('Censor Bot by gargoyle1 is running!', '', '', '', 'bold'); cb.sendNotice('Posts containing following words will be censored!', '', '', '', 'bold'); var notice = 'Forbidden words: '; for (var i=0; i<w; i++) { notice += words[i]; if (i<(w-1)) { notice += ', '; } } notice += '!'; cb.sendNotice(notice, '', '', '', ''); } if (msg['m'] == '!list') { msg['X-Spam'] = true; if (cb.settings.mode == 'random') { cb.sendNotice('Following words...', msg['user'], '', '', ''); for (var i=0; i<w; i++) { cb.sendNotice((i+1)+ '. ' + words[i], msg['user'], '', '', ''); } cb.sendNotice('...will be randomly replaced by:', msg['user'], '', '', ''); for (var i=0; i<r; i++) { cb.sendNotice((i+1)+ '. ' + replace[i], msg['user'], '', '', ''); } } else if (cb.settings.mode == 'censor') { cb.sendNotice('Following words will be replaced by ' + cb.settings.label + ' :', msg['user'], '', '', ''); for (var i=0; i<w; i++) { cb.sendNotice((i+1)+ '. ' + words[i], msg['user'], '', '', ''); } } else if (cb.settings.mode == 'replace') { cb.sendNotice('Following words will be replaced:', msg['user'], '', '', ''); for (var i=0; i<w; i++) { cb.sendNotice((i+1)+ '. ' + words[i] + ' --> ' + replace[i], msg['user'], '', '', ''); } } else if (cb.settings.mode == 'silence') { cb.sendNotice('Posts containing following words will be silenced:', msg['user'], '', '', ''); for (var i=0; i<w; i++) { cb.sendNotice((i+1)+ '. ' + words[i], msg['user'], '', '', ''); } } } if (cmsg[0] == '!pew') { msg['X-Spam'] = true; s++; silenced[s] = cmsg[1]; cb.sendNotice(silenced[s] + ' is pewed now!', msg['user'], '', '', ''); silenced.sort(); } if (cmsg[0] == '!unpew') { msg['X-Spam'] = true; for (var i=0; i<=s; i++) { if (silenced[i] == cmsg[1]) { silenced.splice(i,1); cb.sendNotice(cmsg[1] + ' is unpewed now!', msg['user'], '', '', ''); silenced.sort(); } } s--; } if (cmsg[0] == '!pewed') { msg['X-Spam'] = true; var notice = 'Pewed User: '; for (var i=0; i<=s; i++) { notice += silenced[i]; if (i<s) { notice += ', '; } } notice += '!'; cb.sendNotice(notice, msg['user'], '', '', ''); } if (msg['m'] == '!nogreys') { msg['X-Spam'] = true; if (cb.settings.nogreys == 'no') { cb.settings.nogreys = 'yes'; cb.sendNotice('Greys are silenced now!', msg['user'], '', '', ''); } else { cb.settings.nogreys = 'no'; cb.sendNotice('Greys are unsilenced now!', msg['user'], '', '', ''); } } } return msg; }); function splitwords() { words = cb.settings.wordlist.split(' '); replace = cb.settings.replacelist.split(' '); w = words.length; if (replace[0] == '') { r = 0; } else { r = replace.length; } fillwords(); } function fillwords() { if (r < w) { for (var i=r; i<w; i++) { replace[i] = cb.settings.label; } } } function welcome() { cb.sendNotice('Hello ' + cb.room_slug + '!', cb.room_slug, '', '', 'bold'); cb.sendNotice('Thank you for using my Bot! I hope you like it!', cb.room_slug, '', '', 'bold'); cb.sendNotice('I would love to get some feedback. So please comment the Bot.', cb.room_slug, '', '', 'bold'); } function init() { cb.settings.label += ' '; welcome(); cb.setTimeout(splitwords, 1000); } init();
© Copyright Chaturbate 2011- 2026. All Rights Reserved.