# Description: # permette di internare persone nel campo di Diliberti # # Configuration: # None # # Commands: # hubot interna - interna una persona # hubot libera - libera una persona # hubot liberami - prova a liberarti # hubot lista/mostrami (gli) internati - mostra la lista di internati # # Author: # Ravinder Pal Singh # lev = require 'fast-levenshtein' module.exports = (robot) -> robot.respond /interna (.+)/i, (res) -> mem = robot.brain.get('internati') or {} name = res.match[1].toLowerCase() exp1 = ['ho sbattuto dentro', 'come vuoi, sbattiamo dentro', 'è la tua fine'] if mem[name]? if mem[name].da intern = mem[name].da.name res.send 'Mi dispiace ma '+name+' è già stato internato su ordine di '+intern else res.send 'Mi dispiace ma '+name+' è già stato internato...' else if name.match /(?:dili(?:bert(?:i)?)?)|(?:ros(?:y|ario))|dre$/i # Diliberti res.send 'non posso internare il mio padrone...' else if name.match /fa(?:zo|soli)/i # Fasoli res.send 'ciccio, io internerei te al posto suo' else if name.match /as(?:sa|jon|sion(?:e|i))/i # Asjon res.send 'ma sei scemo????' else res.send res.random(exp1)+' '+name # Salvo chi ha internato mem[name] = { da: res.message.user } robot.brain.set 'internati', mem robot.respond /libera (.+)/i, (res) -> mem = robot.brain.get('internati') or {} user = res.message.user.name.toLowerCase().split '_' name = res.match[1].toLowerCase() if (Math.min.apply @, user.map (x) -> lev.get(name, x)) < 4 reply = ['ti volevi liberare, eh? non sono mica scemo', 'si certo, come no.', 'neanche per sogno', 'scordatelo'] res.send res.random reply else if mem[name]? res.send 'ho liberato '+name+' ma ricordate che potete sbatterlo dentro quando volete ;)' delete mem[name] robot.brain.set 'internati', mem else res.send res.random ['chi?', 'mai sentito', 'sorry, non è qui', 'e chi sarebbe?'] robot.respond /liberami/i, (res) -> nope = ["I'm sorry Dave, I'm afraid I can't do that", 'contaci', 'smettila', 'basta', 'non credo proprio','devo chiedere al mio padrone'] ok = ['è il tuo giorno fortunato. non farti più vedere', 'mi hai stufato: sai cosa faccio? ti libero', 'va bene, mi hai stancato. vattene ma non dire niente a diliberti'] user = res.message.user.name.toLowerCase().split '_' mem = robot.brain.get 'internati' or {} dists = ([(Math.min.apply @, user.map (x) -> lev.get name, x), name] for name of mem) [dist, name] = dists.reduce (x, y) -> if x[0] < y[0] then x else y if dist < 4 if Math.random() < 0.02 res.send res.random ok delete mem[name] robot.brain.set 'internati', mem else res.send res.random nope else res.send 'ma non sei un prigioniero! ti posso internare se vuoi...' robot.respond /internati-dump/i, (res) -> res.send JSON.stringify robot.brain.get('internati') robot.respond /(?:(?:(?:dimmi|mostrami) )|(?:lista ))?(?:gli )?internat(?:i|o)(?:\?)?/i, (res) -> mem = robot.brain.get 'internati' if mem isnt null r = ['ho internato', 'ho preso', 'ho catturato', 'sbattuto dentro'] res.send 'negli ultimi giorni '+res.random(r)+' '+(i for i of mem).join(', ') else res.send res.random ['sorry, nessun prigioniero...', 'nessuno. mandatemi subito qualcuno']