]> gitweb.pimeys.fr Git - bots/themis.git/commitdiff
1er jet de la config de Themis
authorThemis le bot IRC <themis@crans.org>
Thu, 21 Jun 2012 19:08:05 +0000 (21:08 +0200)
committerThemis le bot IRC <themis@crans.org>
Thu, 21 Jun 2012 19:08:05 +0000 (21:08 +0200)
themis.py

index 4a5f7601140a788c41d4f168ebe6e9b8ad1fd037..a4e424245553166df57b5997107c312e167f0596 100755 (executable)
--- a/themis.py
+++ b/themis.py
@@ -34,8 +34,8 @@ config_ops=[]
 config_report_bugs_to=["[20-100]"]
 
 # config UTF8-fail
-config_utf8_fail = [u"Si je n'avais pas été créé avec la plus grande attention, votre encodage aurait eu raison de moi…"]
-config_utf8_trigger = False
+config_utf8_fail = [u"Ton encodage me déprime…"]
+config_utf8_trigger = True
 # config "tu m'traites ?"
 config_insultes=[u"conna(rd|sse)",u"pute",u"con(|ne)",u"enf(oiré|lure)",
 u"sal(op(|e(|rie)|ard)|aud)",u"p(e|')tite bite",u"imbécile",u"idiot",u"stupid(|e)",u"débile",u"crétin",
@@ -98,11 +98,8 @@ u"Je ne ressens pas de besoin irrésistible de me taire, navré."]
 config_tesla_triggers=[u"t('|u )es là \?",u"\?",u"plop \?",u"plouf \?"]
 config_tesla_answers=[
 u"Oui, je suis là.",
-u"J'écoute.",
-u"En quoi puis-je me rendre utile ?",
-u"On a besoin de moi ?"
 ]
-config_tesla_actions=[u"est là",u"attend des instructions",u"est toujours disponible"]
+config_tesla_actions=[u"déprime",u"est prêt à kicker les gens heureux"]
 
 # config en cas de non-insulte
 config_compliment_triggers=[u"gentil",u"cool",u"sympa",u"efficace"]
@@ -167,6 +164,11 @@ config_leave_messages=config_quit_messages
 config_quit_fail_messages=[u"Tu rêves là."]
 config_leave_fail_messages=config_quit_fail_messages
 
+
+# config de kick
+config_kick_channels=config_chanlist
+config_smileys=[ur':(-|o)?\)',u'\^_?\^',u':-?(p|P)',u'=(\)D|p|P|)',ur'\o/']
+
 def log(serveur,channel,auteur=None,message=None):
     f=open(get_config_logfile(serveur),"a")
     if auteur==message==None:
@@ -179,6 +181,11 @@ def log(serveur,channel,auteur=None,message=None):
         print chain
     f.close()
 
+reg_is_smiley=re.compile(u".*("+u"|".join(config_smileys)+u")")
+def is_smiley(chain):
+    chain=unicode(chain,"utf8")
+    o=re.match(reg_is_smiley,chain)
+    return o
 
 def is_something(chain,matches,avant=u".*(?:^| )",apres=u"(?:$|\.| |,|;).*",case_sensitive=False,debug=False):
     if case_sensitive:
@@ -254,6 +261,7 @@ class Themis(ircbot.SingleServerIRCBot):
         self.ops=self.overops+config_ops
         self.report_bugs_to=config_report_bugs_to
         self.chanlist=config_chanlist
+        self.kick_channels=config_kick_channels
         self.stay_channels=config_stay_channels
         self.quiet_channels=config_quiet_channels
         self.last_perdu=0
@@ -264,7 +272,10 @@ class Themis(ircbot.SingleServerIRCBot):
         serv.privmsg("NickServ","RELEASE %s %s"%(config_irc_pseudo,config_irc_password))
         time.sleep(0.3)
         serv.nick(config_irc_pseudo)
-    
+
+    def give_me_my_op_status(self,serv,chan):
+        serv.privmsg("ChanServ","OP %s"%(chan))
+
     def on_welcome(self, serv, ev):
         self.serv=serv # ça serv ira
         self.give_me_my_pseudo(serv)
@@ -272,9 +283,12 @@ class Themis(ircbot.SingleServerIRCBot):
         log(self.serveur,"Connected")
         if self.debug:
             self.chanlist=["#bot"]
+            self.kick_channels=["#bot"]
         for c in self.chanlist:
             log(self.serveur,"JOIN %s"%(c))
             serv.join(c)
+            self.give_me_my_op_status(serv,c)
+
 
     def lost(self,serv,channel,forced=False):
         if self.last_perdu+config_time_between_perdu<time.time() or forced:
@@ -496,6 +510,11 @@ class Themis(ircbot.SingleServerIRCBot):
                 serv.privmsg(canal, "%s: %s"%(auteur,config_utf8_fail))
             return
         pour_moi,message=self.pourmoi(serv,message)
+        smy=is_smiley(message)
+        if smy:
+            if canal in self.kick_channels:
+                serv.kick(canal,auteur,(u'"%s" ? Ici on déprime !'%(smy.groups()[0])).encode("utf8"))
+                return
         if pour_moi and message.split()!=[]:
             cmd=message.split()[0].lower()
             try:
@@ -619,14 +638,12 @@ class Themis(ircbot.SingleServerIRCBot):
             log(self.serveur,"%s kické de %s par %s (raison : %s)" %(victime,channel,auteur,raison))
             time.sleep(2)
             serv.join(channel)
-            l1,l2=config_kick_answers,config_kick_actions
-            n1,n2=len(l1),len(l2)
-            i=random.randrange(n1+n2)
-            if i>=n1:
-                serv.action(channel,l2[i-n1].format(auteur).encode("utf8"))
-            else:
-                serv.privmsg(channel,l1[i].format(auteur).encode("utf8"))
     
+    def kicker(self, chan, pseudo, raison=None):
+        if raison==None:
+            raison = config_kick_default_reason
+        self.serv.kick(chan,pseudo,raison)
+
     def quitter(self,chan,leave_message=None):
         if leave_message==None:
             leave_message=random.choice(config_leave_messages)