]> gitweb.pimeys.fr Git - bots/themis.git/blobdiff - themis.py
"/', shit
[bots/themis.git] / themis.py
index a5c2937dbd7c6263b39b1fe1e00fc595b2645c98..c3a47f615ce7b07faea4e5db0bd921a98bf3dc34 100755 (executable)
--- a/themis.py
+++ b/themis.py
@@ -41,6 +41,18 @@ def log(serveur,channel,auteur=None,message=None):
         print chain
     f.close()
 
+def ignore_event(serv, ev):
+    """Retourne ``True`` si il faut ignorer cet évènement."""
+    for (blackmask, exceptmask) in config.blacklisted_masks:
+        usermask = ev.source()
+        if exceptmask is None:
+            exceptit = False
+        else:
+            exceptit = bool(irclib.mask_matches(usermask, exceptmask))
+        blackit = bool(irclib.mask_matches(usermask, blackmask))
+        if blackit and not exceptit:
+            return True
+
 reg_is_smiley = re.compile(u".*("+u"|".join(config.smileys)+u")")
 def is_smiley(chain):
     chain=unicode(chain,"utf8")
@@ -184,13 +196,15 @@ class Themis(ircbot.SingleServerIRCBot):
             return (False,message)
 
     def on_privmsg(self, serv, ev):
+        if ignore_event(serv, ev):
+            return
         message=ev.arguments()[0]
         auteur = irclib.nm_to_n(ev.source())
         try:
             test=bot_unicode(message)
         except UnicodeBotError:
             if config.utf8_trigger:
-                serv.privmsg(auteur, config.utf8_fail)
+                serv.privmsg(auteur, random.choice(config.utf8_fail_answers).encode("utf8"))
             return
         message=message.split()
         cmd=message[0].lower()
@@ -383,14 +397,16 @@ class Themis(ircbot.SingleServerIRCBot):
             serv.privmsg(auteur,"Je n'ai pas compris. Essayez HELP…")
     
     def on_pubmsg(self, serv, ev):
+        if ignore_event(serv, ev):
+            return
         auteur = irclib.nm_to_n(ev.source())
         canal = ev.target()
         message = ev.arguments()[0]
         try:
             test=bot_unicode(message)
         except UnicodeBotError:
-            if not canal in self.quiet_channels and config.utf8_trigger:
-                serv.privmsg(canal, "%s: %s"%(auteur,config.utf8_fail))
+            if config.utf8_trigger and not canal in self.quiet_channels:
+                serv.privmsg(canal, (u"%s: %s"%(auteur,random.choice(config.utf8_fail_answers))).encode("utf8"))
             return
         pour_moi,message=self.pourmoi(serv,message)
         for (detect, reason) in config.kicking_list:
@@ -488,14 +504,16 @@ class Themis(ircbot.SingleServerIRCBot):
                     serv.privmsg(canal,answer.format(auteur).encode("utf8"))
 
     def on_action(self, serv, ev):
+        if ignore_event(serv, ev):
+            return
         action = ev.arguments()[0]
         auteur = irclib.nm_to_n(ev.source())
         channel = ev.target()
         try:
             test=bot_unicode(action)
         except UnicodeBotError:
-            if not channel in self.quiet_channels and config.utf8_trigger:
-                serv.privmsg(channel, "%s: %s"%(auteur,config.utf8_fail))
+            if config.utf8_trigger and not canal in self.quiet_channels:
+                serv.privmsg(canal, (u"%s: %s"%(auteur,random.choice(config.utf8_fail_answers))).encode("utf8"))
             return
         mypseudo=self.nick
         
@@ -529,8 +547,8 @@ class Themis(ircbot.SingleServerIRCBot):
             print ev.source()
             print channel, username
             if channel == "#déprime" and "peb" in username or "becue" in username:
-                time.sleep(5)
-                serv.kick(auteur, "Va abuser de tes droits ailleurs !")
+                print "Kicking peb"
+                serv.execute_delayed(5, serv.kick, (auteur, "Va abuser de tes droits ailleurs !"))
     
     def kicker(self, chan, pseudo, raison=None):
         if raison==None: