]> gitweb.pimeys.fr Git - bots/skeleton.git/blobdiff - skeleton.py
initscript pour Skeleton
[bots/skeleton.git] / skeleton.py
index 8511c93db8893e68ca14fa2307efda635e6691a3..199b082e1d099446c7a13e3b47ae8d69721f3cf5 100755 (executable)
@@ -33,7 +33,7 @@ def log(serveur, channel, auteur=None, message=None):
         chain = "%s %s" % (time.strftime("%F %T"), channel)
     else:
         chain = "%s [%s:%s] %s" % (time.strftime("%F %T"), channel, auteur, message)
-    f.write(chain+"\n")
+    f.write(chain + "\n")
     if config.debug_stdout:
         print chain
     f.close()
@@ -43,8 +43,8 @@ def is_something(chain, matches, avant=u".*(?:^| )", apres=u"(?:$|\.| |,|;).*",
         chain = unicode(chain, "utf8")
     else:
         chain = unicode(chain, "utf8").lower()
-    allmatches = "("+"|".join(matches)+")"
-    reg = (avant+allmatches+apres).lower()
+    allmatches = "(" + "|".join(matches) + ")"
+    reg = (avant + allmatches + apres).lower()
     o = re.match(reg, chain)
     return o
 
@@ -52,7 +52,7 @@ def is_insult(chain, debug=True):
     return is_something(chain, config.insultes, avant=".*(?:^| |')")
 def is_not_insult(chain):
     chain = unicode(chain, "utf8")
-    insult_regexp = u"("+u"|".join(config.insultes)+u")"
+    insult_regexp = u"(" + u"|".join(config.insultes) + u")"
     middle_regexp = u"(une? (?:(?:putain|enfoiré) d(?:e |'))*|)(?:| super )(?: (?:gros|petit|grand|énorme) |)"
     reg = ".*pas %s%s.*" % (middle_regexp, insult_regexp)
     if re.match(reg, chain):
@@ -84,7 +84,7 @@ def is_pan(chain):
 
 def is_time(conf):
     _, _, _, h, m, s, _, _, _ = time.localtime()
-    return (conf[0], 0, 0)<(h, m, s)<(conf[1], 0, 0)
+    return (conf[0], 0, 0) < (h, m, s) < (conf[1], 0, 0)
 def is_day():
     return is_time(config.daytime)
 def is_night():
@@ -101,13 +101,13 @@ def bot_unicode(chain):
 
 class Skeleton(ircbot.SingleServerIRCBot):
     def __init__(self, serveur, debug=False):
-        temporary_pseudo = config.irc_pseudo+str(random.randrange(10000, 100000))
+        temporary_pseudo = config.irc_pseudo + str(random.randrange(10000, 100000))
         ircbot.SingleServerIRCBot.__init__(self, [(serveur, 6667)],
-                              temporary_pseudo, "Ceci est l'ircname du bot", 10)
+                              temporary_pseudo, config.ircname, 10)
         self.debug = debug
         self.serveur = serveur
         self.overops = config.overops
-        self.ops = self.overops+config.ops
+        self.ops = self.overops + config.ops
         self.chanlist = config.chanlist
         self.stay_channels = config.stay_channels
         self.quiet_channels = config.quiet_channels
@@ -134,8 +134,8 @@ class Skeleton(ircbot.SingleServerIRCBot):
         """renvoie (False, lemessage) ou (True, le message amputé de "pseudo: ")"""
         pseudo = self.nick
         size = len(pseudo)
-        if message[:size]  == pseudo and len(message)>size and message[size] == ":":
-            return (True, message[size+1:].lstrip(" "))
+        if message[:size]  == pseudo and len(message) > size and message[size] == ":":
+            return (True, message[size + 1:].lstrip(" "))
         else:
             return (False, message)
 
@@ -152,33 +152,33 @@ class Skeleton(ircbot.SingleServerIRCBot):
         cmd = message[0].lower()
         notunderstood = False
         if cmd == "help":
-            helpdico = {"help":["""HELP <commande>
+            helpdico = {"help" : ["""HELP <commande>
  Affiche de l'aide sur la commande""", None, None],
- "join": [None, """JOIN <channel>
+ "join" : [None, """JOIN <channel>
  Me fait rejoindre le channel""", None],
- "leave": [None, """LEAVE <channel>
+ "leave" : [None, """LEAVE <channel>
  Me fait quitter le channel (sauf s'il est dans ma stay_list).""", None],
- "quiet": [None, """QUIET <channel>
+ "quiet" : [None, """QUIET <channel>
  Me rend silencieux sur le channel.""", None],
- "noquiet": [None, """NOQUIET <channel>
+ "noquiet" : [None, """NOQUIET <channel>
  Me rend la parole sur le channel.""", None],
- "lost": [None, """LOST <channel>
+ "lost" : [None, """LOST <channel>
  Me fait perdre sur le channel.""", None],
- "say": [None, None, """SAY <channel> <message>
+ "say" : [None, None, """SAY <channel> <message>
  Me fait parler sur le channel."""],
- "do": [None, None, """DO <channel> <action>
+ "do" : [None, None, """DO <channel> <action>
  Me fait faitre une action (/me) sur le channel."""],
- "stay": [None, None, """STAY <channel>
+ "stay" : [None, None, """STAY <channel>
  Ajoute le channel à ma stay_list."""],
- "nostay": [None, None, """NOSTAY <channel>
+ "nostay" : [None, None, """NOSTAY <channel>
  Retire le channel de ma stay_list."""],
- "ops": [None, None, """OPS
+ "ops" : [None, None, """OPS
  Affiche la liste des ops."""],
- "overops": [None, None, """OVEROPS
+ "overops" : [None, None, """OVEROPS
  Affiche la liste des overops."""],
- "kick": [None, None, """KICK <channel> <pseudo> [<raison>]
+ "kick" : [None, None, """KICK <channel> <pseudo> [<raison>]
  Kicke <pseudo> du channel (Il faut bien entendu que j'y sois op)."""],
- "die": [None, None, """DIE
+ "die" : [None, None, """DIE
  Me déconnecte du serveur IRC."""]
  }
             helpmsg_default = "Liste des commandes disponibles :\nHELP"
@@ -196,105 +196,105 @@ class Skeleton(ircbot.SingleServerIRCBot):
                 helpmsg = helpmsgs[0]
                 if op and helpmsgs[1]:
                     if helpmsg:
-                        helpmsg += "\n"+helpmsgs[1]
+                        helpmsg += "\n" + helpmsgs[1]
                     else:
                         helpmsg = helpmsgs[1]
                 if overop and helpmsgs[2]:
                     if helpmsg:
-                        helpmsg += "\n"+helpmsgs[2]
+                        helpmsg += "\n" + helpmsgs[2]
                     else:
                         helpmsg = helpmsgs[2]
             for ligne in helpmsg.split("\n"):
                 serv.privmsg(auteur, ligne)
         elif cmd == "join":
             if auteur in self.ops:
-                if len(message)>1:
+                if len(message) > 1:
                     if message[1] in self.chanlist:
                         serv.privmsg(auteur, "Je suis déjà sur %s" % (message[1]))
                     else:
                         serv.join(message[1])
                         self.chanlist.append(message[1])
-                        serv.privmsg(auteur, "Channels : "+" ".join(self.chanlist))
+                        serv.privmsg(auteur, "Channels : " + " ".join(self.chanlist))
                         log(self.serveur, "priv", auteur, " ".join(message))
                 else:
-                    serv.privmsg(auteur, "Channels : "+" ".join(self.chanlist))
+                    serv.privmsg(auteur, "Channels : " + " ".join(self.chanlist))
             else:
                 notunderstood = True
         elif cmd == "leave":
-            if auteur in self.ops and len(message)>1:
+            if auteur in self.ops and len(message) > 1:
                 if message[1] in self.chanlist:
                     if not (message[1] in self.stay_channels) or auteur in self.overops:
                         self.quitter(message[1], " ".join(message[2:]))
                         self.chanlist.remove(message[1])
-                        log(self.serveur, "priv", auteur, " ".join(message)+"[successful]")
+                        log(self.serveur, "priv", auteur, " ".join(message) + "[successful]")
                     else:
                         serv.privmsg(auteur, "Non, je reste !")
-                        log(self.serveur, "priv", auteur, " ".join(message)+"[failed]")
+                        log(self.serveur, "priv", auteur, " ".join(message) + "[failed]")
                 else:
                     serv.privmsg(auteur, "Je ne suis pas sur %s" % (message[1]))
             else:
                 notunderstood = True
         elif cmd == "stay":
             if auteur in self.overops:
-                if len(message)>1:
+                if len(message) > 1:
                     if message[1] in self.stay_channels:
-                        log(self.serveur, "priv", auteur, " ".join(message)+"[failed]")
+                        log(self.serveur, "priv", auteur, " ".join(message) + "[failed]")
                         serv.privmsg(auteur, "Je stay déjà sur %s." % (message[1]))
                     else:
-                        log(self.serveur, "priv", auteur, " ".join(message)+"[successful]")
+                        log(self.serveur, "priv", auteur, " ".join(message) + "[successful]")
                         self.stay_channels.append(message[1])
-                        serv.privmsg(auteur, "Stay channels : "+" ".join(self.stay_channels))
+                        serv.privmsg(auteur, "Stay channels : " + " ".join(self.stay_channels))
                 else:
-                    serv.privmsg(auteur, "Stay channels : "+" ".join(self.stay_channels))
+                    serv.privmsg(auteur, "Stay channels : " + " ".join(self.stay_channels))
             else:
                 notunderstood = True
         elif cmd == "nostay":
             if auteur in self.overops:
-                if len(message)>1:
+                if len(message) > 1:
                     if message[1] in self.stay_channels:
-                        log(self.serveur, "priv", auteur, " ".join(message)+"[successful]")
+                        log(self.serveur, "priv", auteur, " ".join(message) + "[successful]")
                         self.stay_channels.remove(message[1])
-                        serv.privmsg(auteur, "Stay channels : "+" ".join(self.stay_channels))
+                        serv.privmsg(auteur, "Stay channels : " + " ".join(self.stay_channels))
                     else:
-                        log(self.serveur, "priv", auteur, " ".join(message)+"[failed]")
+                        log(self.serveur, "priv", auteur, " ".join(message) + "[failed]")
                         serv.privmsg(auteur, "Je ne stay pas sur %s." % (message[1]))
 
             else:
                 notunderstood = True
         elif cmd == "die":
             if auteur in self.overops:
-                log(self.serveur, "priv", auteur, " ".join(message)+"[successful]")
+                log(self.serveur, "priv", auteur, " ".join(message) + "[successful]")
                 self.mourir()
             else:
                 notunderstood = True
         elif cmd == "quiet":
             if auteur in self.ops:
-                if len(message)>1:
+                if len(message) > 1:
                     if message[1] in self.quiet_channels:
                         serv.privmsg(auteur, "Je me la ferme déjà sur %s" % (message[1]))
-                        log(self.serveur, "priv", auteur, " ".join(message)+"[failed]")
+                        log(self.serveur, "priv", auteur, " ".join(message) + "[failed]")
                     else:
                         self.quiet_channels.append(message[1])
-                        serv.privmsg(auteur, "Quiet channels : "+" ".join(self.quiet_channels))
-                        log(self.serveur, "priv", auteur, " ".join(message)+"[successful]")
+                        serv.privmsg(auteur, "Quiet channels : " + " ".join(self.quiet_channels))
+                        log(self.serveur, "priv", auteur, " ".join(message) + "[successful]")
                 else:
-                    serv.privmsg(auteur, "Quiet channels : "+" ".join(self.quiet_channels))
+                    serv.privmsg(auteur, "Quiet channels : " + " ".join(self.quiet_channels))
             else:
                 notunderstood = True
         elif cmd == "noquiet":
             if auteur in self.ops:
-                if len(message)>1:
+                if len(message) > 1:
                     if message[1] in self.quiet_channels:
                         self.quiet_channels.remove(message[1])
-                        serv.privmsg(auteur, "Quiet channels : "+" ".join(self.quiet_channels))
-                        log(self.serveur, "priv", auteur, " ".join(message)+"[successful]")
+                        serv.privmsg(auteur, "Quiet channels : " + " ".join(self.quiet_channels))
+                        log(self.serveur, "priv", auteur, " ".join(message) + "[successful]")
                     else:
                         serv.privmsg(auteur, "Je ne me la ferme pas sur %s." % (message[1]))
-                        log(self.serveur, "priv", auteur, " ".join(message)+"[failed]")
+                        log(self.serveur, "priv", auteur, " ".join(message) + "[failed]")
             else:
                 notunderstood = True
         elif cmd == "say":
-            if auteur in self.overops and len(message)>2:
+            if auteur in self.overops and len(message) > 2:
                 serv.privmsg(message[1], " ".join(message[2:]))
                 log(self.serveur, "priv", auteur, " ".join(message))
             elif len(message) <= 2:
@@ -302,7 +302,7 @@ class Skeleton(ircbot.SingleServerIRCBot):
             else:
                 notunderstood = True
         elif cmd == "do":
-            if auteur in self.overops and len(message)>2:
+            if auteur in self.overops and len(message) > 2:
                 serv.action(message[1], " ".join(message[2:]))
                 log(self.serveur, "priv", auteur, " ".join(message))
             elif len(message) <= 2:
@@ -310,7 +310,7 @@ class Skeleton(ircbot.SingleServerIRCBot):
             else:
                 notunderstood = True
         elif cmd == "kick":
-            if auteur in self.overops and len(message)>2:
+            if auteur in self.overops and len(message) > 2:
                 serv.kick(message[1], message[2], " ".join(message[3:]))
                 log(self.serveur, "priv", auteur, " ".join(message))
             elif len(message) <= 2:
@@ -351,28 +351,28 @@ class Skeleton(ircbot.SingleServerIRCBot):
                 args = ""
             if cmd in ["meurs", "die", "crève"]:
                 if auteur in self.overops:
-                    log(self.serveur, canal, auteur, message+"[successful]")
+                    log(self.serveur, canal, auteur, message + "[successful]")
                     self.mourir()
                 else:
                     serv.privmsg(canal, ("%s: %s" % (auteur, random.choice(config.quit_fail_messages))).encode("utf8"))
-                    log(self.serveur, canal, auteur, message+"[failed]")
+                    log(self.serveur, canal, auteur, message + "[failed]")
     
             elif cmd in ["part", "leave", "dégage", "va-t-en", "tut'tiresailleurs, c'estmesgalets"]:
                 if auteur in self.ops and (not (canal in self.stay_channels)
                                            or auteur in self.overops):
                     self.quitter(canal)
-                    log(self.serveur, canal, auteur, message+"[successful]")
+                    log(self.serveur, canal, auteur, message + "[successful]")
                     if canal in self.chanlist:
                         self.chanlist.remove(canal)
                 else:
                     serv.privmsg(canal, ("%s: %s" % (auteur, random.choice(config.leave_fail_messages))).encode("utf8"))
-                    log(self.serveur, canal, auteur, message+"[failed]")
+                    log(self.serveur, canal, auteur, message + "[failed]")
             
             elif cmd in ["deviens", "pseudo"]:
                 if auteur in self.ops:
                     become = args
                     serv.nick(become)
-                    log(self.serveur, canal, auteur, message+"[successful]")
+                    log(self.serveur, canal, auteur, message + "[successful]")
     
             if cmd in ["meur", "meurt", "meurre", "meurres"] and not canal in self.quiet_channels:
                 serv.privmsg(canal, '%s: Mourir, impératif, 2ème personne du singulier : "meurs" (de rien)' % (auteur))
@@ -394,9 +394,9 @@ class Skeleton(ircbot.SingleServerIRCBot):
             if is_tesla(message) and not canal in self.quiet_channels:
                 l1, l2 = config.tesla_answers, config.tesla_actions
                 n1, n2 = len(l1), len(l2)
-                i = random.randrange(n1+n2)
+                i = random.randrange(n1 + n2)
                 if i >= n1:
-                    serv.action(canal, l2[i-n1].encode("utf8"))
+                    serv.action(canal, l2[i - n1].encode("utf8"))
                 else:
                     serv.privmsg(canal, "%s: %s" % (auteur, l1[i].encode("utf8")))
             if is_tamere(message) and not canal in self.quiet_channels:
@@ -430,8 +430,8 @@ class Skeleton(ircbot.SingleServerIRCBot):
         else:
             if not canal in self.quiet_channels:
                 mypseudo = self.nick
-                if re.match((u"^("+u"|".join(config.bonjour_triggers)
-                                  +ur")( {}| all| tout le monde| (à )?tous)(\.| ?!)?$"
+                if re.match((u"^(" + u"|".join(config.bonjour_triggers)
+                                   + ur")( {}| all| tout le monde| (à )?tous)(\.| ?!)?$"
                              ).format(mypseudo).lower(), message.decode("utf8").strip().lower()):
                     answer = random.choice(config.bonjour_answers)
                     serv.privmsg(canal, answer.format(auteur).encode("utf8"))
@@ -451,17 +451,17 @@ class Skeleton(ircbot.SingleServerIRCBot):
         if is_bad_action_trigger(action, mypseudo) and not channel in self.quiet_channels:
             l1, l2 = config.bad_action_answers, config.bad_action_actions
             n1, n2 = len(l1), len(l2)
-            i = random.randrange(n1+n2)
+            i = random.randrange(n1 + n2)
             if i >= n1:
-                serv.action(channel, l2[i-n1].format(auteur).encode("utf8"))
+                serv.action(channel, l2[i - n1].format(auteur).encode("utf8"))
             else:
                 serv.privmsg(channel, l1[i].format(auteur).format(auteur).encode("utf8"))
         if is_good_action_trigger(action, mypseudo) and not channel in self.quiet_channels:
             l1, l2 = config.good_action_answers, config.good_action_actions
             n1, n2 = len(l1), len(l2)
-            i = random.randrange(n1+n2)
+            i = random.randrange(n1 + n2)
             if i >= n1:
-                serv.action(channel, l2[i-n1].format(auteur).format(auteur).encode("utf8"))
+                serv.action(channel, l2[i - n1].format(auteur).format(auteur).encode("utf8"))
             else:
                 serv.privmsg(channel, l1[i].format(auteur).format(auteur).encode("utf8"))
     
@@ -476,9 +476,9 @@ class Skeleton(ircbot.SingleServerIRCBot):
             serv.join(channel)
             l1, l2 = config.kick_answers, config.kick_actions
             n1, n2 = len(l1), len(l2)
-            i = random.randrange(n1+n2)
+            i = random.randrange(n1 + n2)
             if i >= n1:
-                serv.action(channel, l2[i-n1].format(auteur).encode("utf8"))
+                serv.action(channel, l2[i - n1].format(auteur).encode("utf8"))
             else:
                 serv.privmsg(channel, l1[i].format(auteur).encode("utf8"))
     
@@ -508,8 +508,8 @@ if __name__ == "__main__":
         debug = False
     if "--quiet" in sys.argv:
         config.debug_stdout = False
-    serveurs = {"a♡":"acoeur.crans.org", "acoeur":"acoeur.crans.org", "acoeur.crans.org":"acoeur.crans.org",
-              "irc":"irc.crans.org", "crans":"irc.crans.org", "irc.crans.org":"irc.crans.org"}
+    serveurs = {"a♡" : "acoeur.crans.org", "acoeur" : "acoeur.crans.org", "acoeur.crans.org" : "acoeur.crans.org",
+              "irc" : "irc.crans.org", "crans" : "irc.crans.org", "irc.crans.org" : "irc.crans.org"}
     try:
         serveur = serveurs[serveur]
     except KeyError: