From 3a943afbc1a3a08ca31b6ba17f7d9ddf7bdf46cb Mon Sep 17 00:00:00 2001 From: rnhmjoj Date: Sat, 31 Oct 2015 00:17:21 +0100 Subject: [PATCH] add ban command --- scripts/telegram.coffee | 44 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/scripts/telegram.coffee b/scripts/telegram.coffee index 0afd9da..2f1e50b 100644 --- a/scripts/telegram.coffee +++ b/scripts/telegram.coffee @@ -8,18 +8,21 @@ # hubot chi sei - chiedi a hubot di identificarsi # hubot chi sono / cosa sai di me - mostra il tuo contatto nel registro di hubot # hubot in che gruppi sei / dove scrivi - chiedi a hubot dove chatta -# hubot (mi inviti / invitami) (nel gruppo / in) - chiedi ad hubot di invitardi in un gruppo -# hubot (aggiungi[mi] / crea) (il mio / [tra]i contatto/i) [telefono] - chiedi ad hubot creare il tuo contatto +# hubot (mi inviti / invitami) (nel gruppo / in) - chiedi ad hubot di invitardi in un gruppo +# hubot (aggiungi[mi] / crea) (il mio / [tra]i contatto/i) [telefono] - chiedi ad hubot di creare il tuo contatto +# hubot banna - chiedi di bannare un utente dal gruppo attuale (solo se hubot l'ha invitato) +# hubot bannalo - chiedi ad hubot di bannare l'ultimo utente ad aver scritto un messaggio dal gruppo # # Author: # Michele Guerini Rocco (rnhmjoj) # net = require 'net' +lev = require 'fast-levenshtein' module.exports = (robot) -> - # format a name a telegram-cli likes it + # format a name as telegram-cli likes it norm = (x) -> x.replace /\ /g, '_' # directly run a command in telegram-cli and return its output @@ -130,6 +133,41 @@ module.exports = (robot) -> else res.send "fatto!" + robot.respond /banna (.+)/, (res) -> + ok = [', ora non sarai più un problema', ' terminato', + ' non farti più vedere', ', questa è la tua fine' + unk = ['non so chi sia', 'chi?', 'mai sentito', 'sicuro? non lo trovo'] + 'sparito definitivamente'] + nope = ['eh, mi piacerebbe molto ma non posso', 'i have no powers here', + 'nope, non l\'invitato io', 'non sono admin qui, sorry'] + + if res.message.room.match /^user/ + return res.send 'non è un gruppo questo' + chat_info res.message.room, (chat) -> + dists = [].concat.apply [], ( + for user in chat.members + for word in [user].concat user.split ' ' + [(lev.get res.match[1], word), user]) + [dist, name] = dists.reduce (x, y) -> if x[0] < y[0] then x else y + + if dist < 4 + user_info name, (user) -> + run_command "chat_del_user #{chat.id} #{user.id}", (reply) -> + err = (reply[0].split ' ')[-1..][0] + robot.logger.info "delete user #{user.name} from chat #{chat.name}" + + if err is 'SUCCESS' + robot.logger.info 'user deleted' + res.send user.name + res.random ok + else if err is 'CHAT_ADMIN_REQUIRED' + res.send res.random nope + robot.logger.warning 'cannot delete user: not authorized' + else + robot.logger.error 'error:\n' + reply.join '\n' + res.send 'oh no: c\'è stato un errore, non so' + else + res.send res.random unk + robot.respond /(mi )?invit(i|ami) (in|nel gruppo) ([^?]+)\??/, (res) -> denied = ['BZBZ ADMIN-NOT-DETECTED', 'BZBZ IS-NOT-AUTHORIZED', 'BZBZ ACCESS-DENIED'] nope = ['ahahah NO', 'mai sentito questo', 'invita anche me magari', 'che?']