From 6c2e17ac7f2db4d128517ad1854c72e0fdd354ef Mon Sep 17 00:00:00 2001 From: Holden Rohrer Date: Thu, 16 Jul 2020 22:10:33 -0400 Subject: used id and lecture delay These should reduce the bot's total response count, improving efficiency with spammers. The lecture delay includes a space-replacement and differ to allow "b a d w o r d" to still only require 7 changes. Tile deletion delay upped to 5 minutes. --- examples/nword.js | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) (limited to 'examples/nword.js') diff --git a/examples/nword.js b/examples/nword.js index 9367362..8fe8f5e 100644 --- a/examples/nword.js +++ b/examples/nword.js @@ -1,14 +1,18 @@ // Replaces the n-word with "n-word" const Socket = require('../socket'); const Space = require('../space'); +const comb = require('../utils/comb'); const Search = require('../tools/search'); const Queue = require('../tools/queue'); const maketiles = require('../utils/maketiles'); const vec = require('../utils/vec'); const wwrap = require('../utils/writewrap'); +const id = require('../utils/ident'); var main = new Socket(); wwrap.call(main); +id.call(main); + var search = new Search(); var ids = []; var idcall = []; @@ -17,14 +21,19 @@ var wq = new Queue(1000, 200, (w,max) =>{ let id; while (id = ids.shift()) { if (id > max) break; - main.on(globid, idcall.shift()); + let run = idcall.shift(); + main.on(globid, ()=>{run();main.off(this)}); } }); -main.on('open',()=>wq.enable()); +main.on('init',(send)=>{ + main.sender = send; + wq.enable(); +}); var expire = {}; main.on('tileUpdate', (send, source, tiles)=>{ + if (send === main.sender) return; let tiledata = maketiles(tiles); for (let loc of tiledata.locs) { let spc = tiledata.tilespaces[loc]; @@ -34,15 +43,30 @@ main.on('tileUpdate', (send, source, tiles)=>{ } search.add(loc, spc); expire[loc] = setTimeout(() => {search.del(loc); delete expire[loc];}, - 30000); + 300*1000); } }); -search.match(['[Nn] *[Ii] *[Gg] *[Gg] *[Ee] *[Rr]'], clean); +makeclean('I am racist', '[Nn] *[Ii] *[Gg] *[Gg] *([Ee] *[Rr]|[Aa])'); +makeclean('I am ableist', '[Rr] *[Ee] *[Tt] *[Aa] *[Rr] *[Dd]'); -let response = new Space().adhoc(' I am a racist '); -function clean(coord, send){ - response.loc = vec.add(coord,[0,-6]); - ids.push(wq.enqueue(response.towrite())); - idcall.push(() => {search.update(response);}); +let lecture = {}; +function makeclean(resp, reg){ + let response = new Space().adhoc(resp); + let regex = new RegExp(reg,'g'); + function clean(coord, send, space){ + let out; + if (!lecture[send]){ + response.loc = coord; + out = response; + lecture[send] = true; + setTimeout(() => {delete lecture[send];}, 1000); + }else{ + out = new Space().adhoc(space.print().replace(regex, + match=>' '.repeat(match.length))).comb(space, comb.sub); + } + ids.push(wq.enqueue(out.towrite())); + idcall.push(() => {search.update(response);}); + } + search.match([reg], clean); } -- cgit