]> gitweb.pimeys.fr Git - bots/saturnin.git/blobdiff - saturnin.py
IRC, I hate you
[bots/saturnin.git] / saturnin.py
index 58b5f30a83fa6296dd0e9cb32937ddb338a70d12..848019c2ea51a4001b4295f0862eb468ddb1fae8 100755 (executable)
@@ -204,6 +204,8 @@ class Saturnin(ircbot.SingleServerIRCBot):
                         helpmsg+="\n"+helpmsgs[2]
                     else:
                         helpmsg=helpmsgs[2]
+                if not helpmsg: # Un non-op a demandé de l'aide sur une commande dont il n'est pas censé connaître l'existence
+                    helpmsg = "Commande inacessible."
             for ligne in helpmsg.split("\n"):
                 serv.privmsg(auteur,ligne)
         elif cmd=="join":
@@ -405,6 +407,13 @@ class Saturnin(ircbot.SingleServerIRCBot):
                         self.add_score(de,-asked)
                         self.add_score(to,asked)
                         serv.privmsg(auteur,"Transfert de %s points de %s à %s"%(asked,de,to))
+                elif len(message) == 2:
+                    scores = self.get_scores()
+                    asked = message[1]
+                    if asked in scores:
+                        serv.privmsg(auteur, "Score de %s : %s" % (asked, scores[asked]))
+                    else:
+                        serv.privmsg(auteur, "%s n'a encore jamais joué (avec succès)." % (asked,))
                 else:
                     serv.privmsg(auteur,"Syntaxe : SCORE TRANSFERT <pseudo> [<n>]")
             else:
@@ -452,15 +461,29 @@ class Saturnin(ircbot.SingleServerIRCBot):
     def sendscore(self, to):
         self.serv.privmsg(to, "Votre score : %s"%(self.get_scores().get(to,0)) )
     
+    def _sendscores(self, to, scores):
+        message = ''
+        for [nick, score] in scores:
+            score = '{}: {}'.format(nick, score)
+            if len(message) < config.MAX_LENGTH - len(score):
+                message += ' ' + score
+            else:
+                self.serv.privmsg(to, message)
+                message = score
+        if message:
+            self.serv.privmsg(to, message)
+
     def sendscores(self, to):
         scores=self.get_scores().items()
         # trie par score
         scores.sort(lambda x,y:cmp(x[1],y[1]))
         scores.reverse()
-        self.serv.privmsg(to, "Scores by score : "+" ; ".join(["%s %s"%(i[0],i[1]) for i in scores]))
+        self.serv.privmsg(to, "Scores by score : ")
+        self._sendscores(to, scores)
         # trie par pseudo
         scores.sort(lambda x,y:cmp(x[0].lower(),y[0].lower()))
-        self.serv.privmsg(to, "Scores by pseudo : "+" ; ".join(["%s %s"%(i[0],i[1]) for i in scores]))
+        self.serv.privmsg(to, "Scores by pseudo : ")
+        self._sendscores(to, scores)
     
     def on_pubmsg(self, serv, ev):
         if ignore_event(serv, ev):
@@ -506,9 +529,13 @@ class Saturnin(ircbot.SingleServerIRCBot):
                 self.sendscore(auteur)
             elif cmd == "scores":
                 self.sendscores(auteur)
-        else:
-            if is_pan(message):
-                self.shot(channel, auteur)
+            elif cmd in [u"deviens", u"pseudo"]:
+                if auteur in self.ops:
+                    become = args
+                    serv.nick(become)
+                    log(self.serveur, channel, auteur, message + "[successful]")
+        if is_pan(message):
+            self.shot(channel, auteur)
     
     def on_action(self, serv, ev):
         if ignore_event(serv, ev):