]> gitweb.pimeys.fr Git - bots/deconnaisseur.git/commitdiff
Gestion améliorée des scores (SCORE TRANSFERT & SCORES {DEL|ADD|SUB})
authorVincent Le Gallic <deconnaisseur@crans.org>
Mon, 7 May 2012 18:39:19 +0000 (20:39 +0200)
committerVincent Le Gallic <deconnaisseur@crans.org>
Mon, 7 May 2012 18:39:19 +0000 (20:39 +0200)
deconnaissances.acoeur.txt
deconnaissances.crans.txt
deconnaisseur.py

index b532ea66403bd8e008fff389fad75ab54dbaf141..cfd89b970f6db5098f9e191920b5a7ea1daab19d 100644 (file)
@@ -1,16 +1,16 @@
 %
+Écrivain : En voiture Marcel
+Provence
+Marcel bagnole
+Marcel bagnole
+1
+%
 Chanteur : Chanteur du sud-ouest en Renault 4
 Sarbacane
 Francis 4L
 Francis 4L
 1
 %
-Écrivain : En voiture Marcel
-Provence
-Marcel bagnole
-Marcel bagnole
-0
-%
 Profession : Boisson russe pour vous défendre
 Justice
 La vodka de la défense
@@ -41,12 +41,6 @@ Costard Ricard
 Costard Ricard
 1
 %
-Événement sportif : 24 arabes au pays des rillettes
-Course automobile
-Les (24|vingt-quatre) beurs du Mans
-Les 24 beurs du Mans
-1
-%
 Chanteur : Le Michel qui a pris beaucoup de poissons
 Laurette
 Michel belle pêche
@@ -65,36 +59,18 @@ Ne me cuite pas
 Ne me cuite pas
 1
 %
-Géographie : Les îles du doigt infecté
-Espagne
-Les îles panaris
-Les îles panaris
-1
-%
 Homme politique : Fidèle à sa marque d'huile automobile
 La Havane
 Fidèle Castrol
 Fidèle Castrol
 1
 %
-Fleur : La moitié d'Amadeus
-Nice
-(Le )mi(-| )Mozart
-Le mi-Mozart
-1
-%
 Ville : Le mâle de ta chèvre tousse
 Mali
 Ton bouc tousse
 Ton bouc tousse
 1
 %
-Bande dessinée : Le sceptre de bus
-Tintin
-Le sceptre d'autocar
-Le sceptre d'autocar
-1
-%
 Chanson : Le chevreau c'est terminé
 Hervé Vilard
 Cabri c'est fini
@@ -131,12 +107,6 @@ Le mur de l'alimentation
 Le mur de l'alimentation
 1
 %
-Gastronomie : Philosophe grec de fromages
-Avant le dessert
-Platon de fromages
-Platon de fromages
-1
-%
 Géographie : La pomme de terre belge du sud
 Le Cap
 La frite du sud
@@ -179,12 +149,6 @@ Questions pour un shampo?oing
 Questions pour un shampooing
 1
 %
-Chanson : La poupée qui petit drapeau
-Michel Polnareff
-La poupée qui fanion
-La poupée qui fanion
-1
-%
 Événement sportif : Le tour d'une écriture particulière
 Cyclisme
 Le tour d'italique
@@ -321,7 +285,7 @@ Pays : Le petit de l'autruche grise
 Habsbourg
 L'autruchon gris
 L'autruchon gris
-1
+2
 %
 Chanson : Il est baissé devant le pianiste
 Michel Berger
@@ -329,12 +293,6 @@ L'accroupi du pianiste
 L'accroupi du pianiste
 1
 %
-Œuvre musicale : Belle bicyclette d'un compositeur classique
-Maurice Ravel
-Le beau vélo de Ravel
-Le beau vélo de Ravel
-1
-%
 Chanson : Arbre du bord des routes pour moi
 Plastic Bertrand
 Platane pour moi
@@ -367,7 +325,7 @@ Roc qui bat le boa
 %
 Femme politique : Filet de canard en pile de chairs
 Ministre anglais
-Magret de tas de chairs
+Magret (de )?tas de chairs?
 Magret de tas de chairs
 1
 %
@@ -377,12 +335,6 @@ Marguerite ours noir
 Marguerite ours noir
 1
 %
-Œuvre musicale : Il apprend les sources
-Paul Dukas
-L'apprenti sourcier
-L'apprenti sourcier
-1
-%
 Roman : Damné stylo
 Baleine
 Maudit Bic
@@ -455,12 +407,6 @@ Valide vos stocks
 Valide vos stocks
 1
 %
-Acteur : Sylvester skie entre les piquets
-Rambo
-Sylvester slalome
-Sylvester slalome
-1
-%
 Film : Membre amputé des eaux fraîches
 Marcel Pagnol
 Moignon des sources
@@ -551,42 +497,18 @@ Défaite de Napoléon Premier
 La bataille de water-polo
 1
 %
-Scientifique : Il commande et va au lit de bonne heure
-Bonnet rouge
-(Le |)commandant couche( |-)tôt
-Le commandant couche tôt
-1
-%
 Établissement scolaire : École des surveillants pieds nus
 Ingénieurs
 École des pions déchaussés
 École des pions déchaussés
 1
 %
-Société secrète : Le clan des clowns
-Cagoule
-Le gugus(se|) clan
-Le gugusse clan
-1
-%
 Homme politique : Georges proclame en sautant
 Le Tigre
 Georges clame en saut
 Georges clame en saut
 1
 %
-Sport : Une haie tous les centièmes de mètre
-Guy Drut
-Le centimètre haie(s|)
-Le centimètre haies
-1
-%
-Événement sportif : Le four d'hypnose
-Course cycliste
-Le four de transe
-Le four de transe
-1
-%
 Chanson : Les potes ne sont pas à tribord
 Georges Brassens
 Les copains babord
@@ -707,12 +629,6 @@ Il sera elle
 Il sera elle
 1
 %
-Gastronomie : La noix d'alligator
-Fruit exotique
-(La |)noix de croco
-La noix de croco
-1
-%
 Écrivain: encouragement à un âne
 Lettres de mon moulin
 Allez(,| !|) fonce( !|) baudet
@@ -725,12 +641,6 @@ Vieux motard que j'aimais
 Vieux motard que j'aimais
 1
 %
-Cinéaste : Le gros aiguillon de Jean-Luc
-La chinoise
-Jean-Luc gros dard
-Jean-Luc gros dard
-1
-%
 Événement historique : Le couvent des porcs
 Conflit USA - Cuba
 L'abbaye des cochons
@@ -761,18 +671,6 @@ Le lierre et la tordue
 Le lierre et la tordue
 1
 %
-Marque publicitaire : Seulement un chinois
-Y'a pas d'heure pour en manger
-Juste un bridé
-Juste un bridé
-1
-%
-Film : La cage aux petits flacons de verre
-Edouard Molinaro
-La cage aux fioles
-La cage aux fioles
-1
-%
 Chanson : Elle a l'essieu de velours
 Luis Mariano
 La bielle de Cadix
@@ -815,12 +713,6 @@ Vilaine fermière
 Vilaine fermière
 1
 %
-Présentateur T.V. : Patrick n'a pas besoin de porte-jarretelles
-C'est fou
-Patrick ses bas s(e |')tiennent
-Patrick ses bas s'tiennent
-1
-%
 Personnalité T.V. : Étienne remue
 TF1
 Étienne Bougeotte
@@ -851,15 +743,123 @@ Coq mort
 Coq mort
 1
 %
-Département : Les deux femelles du bouc
-Niort
-Les deux chèvres
-Les deux chèvres
+Acteur : Sylvester skie entre les piquets
+Rambo
+Sylvester slalome
+Sylvester slalome
 1
 %
+Présentateur T.V. : Patrick n'a pas besoin de porte-jarretelles
+C'est fou
+Patrick ses bas s(e |')tiennent
+Patrick ses bas s'tiennent
+2
+%
+Gastronomie : La noix d'alligator
+Fruit exotique
+(La |)noix de croco
+La noix de croco
+2
+%
+Société secrète : Le clan des clowns
+Cagoule
+Le gugus(se|) clan
+Le gugusse clan
+2
+%
+Fleur : La moitié d'Amadeus
+Nice
+(Le )?mi(-| )Mozart
+Le mi-Mozart
+2
+%
+Bande dessinée : Le sceptre de bus
+Tintin
+Le sceptre d'autocar
+Le sceptre d'autocar
+2
+%
+Événement sportif : 24 arabes au pays des rillettes
+Course automobile
+(Les )?(24|vingt-quatre) beurs du Mans
+Les 24 beurs du Mans
+2
+%
+Cinéaste : Le gros aiguillon de Jean-Luc
+La chinoise
+Jean-Luc gros dard
+Jean-Luc gros dard
+2
+%
+Chanson : La poupée qui petit drapeau
+Michel Polnareff
+La poupée qui fanion
+La poupée qui fanion
+2
+%
+Marque publicitaire : Seulement un chinois
+Y'a pas d'heure pour en manger
+Juste un bridé
+Juste un bridé
+2
+%
 Acteur : Sylvester skie entre les piquets
 Rambo
 Sylvester slalome
 Sylvester slalome
-1
-%
\ No newline at end of file
+2
+%
+Géographie : Les îles du doigt infecté
+Espagne
+Les îles panaris
+Les îles panaris
+2
+%
+Événement sportif : Le four d'hypnose
+Course cycliste
+Le four de transe
+Le four de transe
+2
+%
+Œuvre musicale : Belle bicyclette d'un compositeur classique
+Maurice Ravel
+Le beau vélo de Ravel
+Le beau vélo de Ravel
+2
+%
+Film : La cage aux petits flacons de verre
+Edouard Molinaro
+La cage aux fioles
+La cage aux fioles
+2
+%
+Gastronomie : Philosophe grec de fromages
+Avant le dessert
+Platon de fromages
+Platon de fromages
+2
+%
+Œuvre musicale : Il apprend les sources
+Paul Dukas
+L'apprenti sourcier
+L'apprenti sourcier
+2
+%
+Département : Les deux femelles du bouc
+Niort
+Les deux chèvres
+Les deux chèvres
+2
+%
+Sport : Une haie tous les centièmes de mètre
+Guy Drut
+(Le )?centimètre haie(s|)
+Le centimètre haies
+2
+%
+Scientifique : Il commande et va au lit de bonne heure
+Bonnet rouge
+(Le |)commandant couche( |-)tôt
+Le commandant couche tôt
+2
+%
index 74f69d65451418a278e1ee5d34a540068f45f791..33dc6c5b7792889bdee32f29597336be41a3e493 100644 (file)
@@ -41,24 +41,12 @@ L'abbaye des cochons
 L'abbaye des cochons
 1
 %
-People: Pauvre Hotel de Luxe
-
-Pas riche Hilton
-Pas riche Hilton
-1
-%
 Animaux : Les briquets potables
 Mammifères des fleuves
 Les Zippos potables
 Les Zippos potables
 1
 %
-Pays : Venez vous amuser ici
-Caracas
-Venez jouer là
-Venez jouer là
-1
-%
 Roman : Damné stylo
 Baleine
 Maudit Bic
@@ -71,36 +59,12 @@ Très chères nos piles
 Très chères nos piles
 1
 %
-Profession : Réparateur de toit à bicyclette
-Petite reine
-Couvreur cycliste
-Couvreur cycliste
-1
-%
-Chanteuse : La paysanne moche
-Lauret Boutonnat
-Vilaine fermière
-Vilaine fermière
-1
-%
 Acteur : Christophe le vertébré
 Le sicilien
 Christophe lombaire
 Christophe lombaire
 1
 %
-Jeu T.V. : Des additions et des kilos de liquide
-Armand Jammot
-Des chiffres et des litres
-Des chiffres et des litres
-1
-%
-Acteur : Gérard égale 4
-Cyrano de Bergerac
-Gérard deux par deux
-Gérard deux par deux
-1
-%
 Gastronomie : Démange un dos asiatique
 Avec des pommes de terre
 Gratte un dos chinois
@@ -127,7 +91,7 @@ Termite a tort
 %
 Sport : Une haie tous les centièmes de mètre
 Guy Drut
-Le centimètre haie(s|)
+(Le )?centimètre haie(s|)
 Le centimètre haies
 1
 %
@@ -137,12 +101,6 @@ La comète des Harley(|s)
 La comète des Harley
 1
 %
-Film : La cage aux petits flacons de verre
-Edouard Molinaro
-La cage aux fioles
-La cage aux fioles
-1
-%
 Série télévisée : Les demi tas de bois de la rivière d'Afrique du nord
 Robert Conrad & Ross Martin
 Les mi(-| )stères de l'Oued
@@ -179,12 +137,6 @@ Questions pour un shampo?oing
 Questions pour un shampooing
 1
 %
-Personnage historique : Empereur arbre fruitier
-Corse
-Napoléon pommier
-Napoléon pommier
-1
-%
 Médecine chirurgicale : L'opération des potes de Capone
 Gorge
 L'opération des amis d'Al
@@ -197,12 +149,6 @@ TF1
 Étienne Bougeotte
 1
 %
-Actur : Jean-Paul, enlève la peau sur mes coups de soleil
-Les magnifiques
-Jean-Paul pèle mon dos
-Jean-Paul pèle mon dos
-1
-%
 Lieu : La balade des morceaux de bœuf
 Nice
 La promenade des onglets
@@ -215,12 +161,6 @@ Fidèle Castrol
 Fidèle Castrol
 1
 %
-Acteur : Sylvester skie entre les piquets
-Rambo
-Sylvester slalome
-Sylvester slalome
-2
-%
 Chanson : Ne me fais pas boire
 Jacques Brel
 Ne me cuite pas
@@ -233,12 +173,6 @@ Moignon des sources
 Moignon des sources
 1
 %
-Présentatrice T.V. : Cajolée
-Enfants
-Dorlotée
-Dorlotée
-1
-%
 Politique : Fantômas la brosse à cheveux
 FN
 Jean Marais le peigne
@@ -269,12 +203,6 @@ Il sera elle
 Il sera elle
 1
 %
-Femme politique : Filet de canard en pile de chairs
-Ministre anglais
-Magret de tas de chairs
-Magret de tas de chairs
-1
-%
 Marque publicitaire : Seulement un chinois
 Y'a pas d'heure pour en manger
 Juste un bridé
@@ -329,18 +257,6 @@ Héros chinois et bagage à ski
 Héros chinois et bagage à ski
 1
 %
-Gastronomie : La noix d'alligator
-Fruit exotique
-(La |)noix de croco
-La noix de croco
-1
-%
-Poète : Paul tisane
-Les sanglots longs
-Paul verveine
-Paul verveine
-1
-%
 Événement sportif : Le four d'hypnose
 Course cycliste
 Le four de transe
@@ -433,7 +349,7 @@ Navarin
 %
 Événement sportif : 24 arabes au pays des rillettes
 Course automobile
-Les (24|vingt-quatre) beurs du Mans
+(Les )?(24|vingt-quatre) beurs du Mans
 Les 24 beurs du Mans
 1
 %
@@ -453,13 +369,97 @@ Cinéaste : Le gros aiguillon de Jean-Luc
 La chinoise
 Jean-Luc gros dard
 Jean-Luc gros dard
-1
+2
+%
+Jeu T.V. : Des additions et des kilos de liquide
+Armand Jammot
+Des chiffres et des litres
+Des chiffres et des litres
+2
+%
+Pays : Venez vous amuser ici
+Caracas
+Venez jouer là
+Venez jouer là
+2
+%
+Présentatrice T.V. : Cajolée
+Enfants
+Dorlotée
+Dorlotée
+2
 %
 Acteur : Sylvester skie entre les piquets
 Rambo
 Sylvester slalome
 Sylvester slalome
-1
+2
+%
+Gastronomie : La noix d'alligator
+Fruit exotique
+(La |)noix de croco
+La noix de croco
+2
+%
+Femme politique : Filet de canard en pile de chairs
+Ministre anglais
+Magret (de )?tas de chairs?
+Magret de tas de chairs
+2
+%
+Personnage historique : Empereur arbre fruitier
+Corse
+Napoléon pommier
+Napoléon pommier
+2
+%
+Acteur : Gérard égale 4
+Cyrano de Bergerac
+Gérard deux par deux
+Gérard deux par deux
+2
+%
+Poète : Paul tisane
+Les sanglots longs
+Paul verveine
+Paul verveine
+2
+%
+People: Pauvre Hotel de Luxe
+
+Pas riche Hilton
+Pas riche Hilton
+2
+%
+Profession : Réparateur de toit à bicyclette
+Petite reine
+Couvreur cycliste
+Couvreur cycliste
+2
+%
+Film : La cage aux petits flacons de verre
+Edouard Molinaro
+La cage aux fioles
+La cage aux fioles
+2
+%
+Chanteuse : La paysanne moche
+Lauret Boutonnat
+Vilaine fermière
+Vilaine fermière
+2
+%
+Actur : Jean-Paul, enlève la peau sur mes coups de soleil
+Les magnifiques
+Jean-Paul pèle mon dos
+Jean-Paul pèle mon dos
+2
+%
+Acteur : Sylvester skie entre les piquets
+Rambo
+Sylvester slalome
+Sylvester slalome
+2
 %
 Série T.V. : Deux policiers américains qui ont faim
 Floride
@@ -643,7 +643,7 @@ Père laboure
 %
 Fleur : La moitié d'Amadeus
 Nice
-(Le )mi(-| )Mozart
+(Le )?mi(-| )Mozart
 Le mi-Mozart
 2
 %
@@ -862,4 +862,4 @@ Tintin
 Le sceptre d'autocar
 Le sceptre d'autocar
 2
-%
+%
\ No newline at end of file
index 666f60a61fb88b17a683b7a6ee9cead20c286206..f2e405c50e7669604b297f03b5e56895bc843268 100755 (executable)
@@ -80,7 +80,6 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
         self.stay_channels=config_stay_channels
         self.play_channels=config_play_channels
         self.play_status={i:[0] for i in self.play_channels}
-        self.scores={}
 
     def give_me_my_pseudo(self,serv):
         serv.privmsg("NickServ","RECOVER %s %s"%(config_pseudo,config_password))
@@ -184,6 +183,7 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
         if cmd=="help":
             helpmsg_default="""Liste des commandes :
  HELP       Affiche ce message d'aide
+ SCORE      Affiche ton score (SCORE TRANSFERT <pseudo> [<n>] pour transférer des points)
  SCORES     Affiche les scores"""
             helpmsg_ops="""
  JOIN       Faire rejoindre un channel (sans paramètres, donne la liste des chans actuels)
@@ -191,6 +191,7 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
  PLAY       Passe un channel en mode "jouer"
  NOPLAY     Passe un channel en mode "ne pas jouer" """
             helpmsg_overops="""
+ SCORES {DEL|ADD|SUB}   Tu veux un dessin ?
  SAY        Fais envoyer un message sur un chan ou à une personne
  STAY       Ignorera les prochains LEAVE pour un chan
  NOSTAY     Opposé de STAY
@@ -300,17 +301,79 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
             if auteur in self.overops:
                 self.die()
         elif cmd=="score":
-            serv.privmsg(auteur,"Votre score : %s"%(self.scores.get(auteur,0)) )
+            if len(message)>1:
+                if len(message) in [3,4] and message[1].lower()=="transfert":
+                    scores=self.get_scores()
+                    de,to=auteur,message[2]
+                    value=scores.get(de,0)
+                    if len(message)==4:
+                        try:
+                            asked=int(message[3])
+                        except ValueError:
+                            serv.privmsg(auteur,"Syntaxe : SCORE TRANSFERT <pseudo> [<n>]")
+                            return
+                    else:
+                        asked=value
+                    if value==0:
+                        serv.privmsg(auteur,"Vous n'avez pas de points")
+                        return
+                    elif asked<=0:
+                        serv.privmsg(auteur,"Bien tenté…")
+                        return
+                    elif asked>value:
+                        serv.privmsg(auteur,"Vous n'avez que %s points"%(value))
+                        return
+                    else:
+                        self.add_score(de,-asked)
+                        self.add_score(to,asked)
+                        serv.privmsg(auteur,"Transfert de %s points de %s à %s"%(asked,de,to))
+                else:
+                    serv.privmsg(auteur,"Syntaxe : SCORE TRANSFERT <pseudo> [<n>]")
+            else:
+                serv.privmsg(auteur,"Votre score : %s"%(self.get_scores().get(auteur,0)) )
         elif cmd=="scores":
-            scores=self.get_scores().items()
-            # trie par score
-            scores.sort(lambda x,y:cmp(x[1].lower(),y[1].lower()))
-            scores.reverse()
-            serv.privmsg(auteur,"Scores by score : "+" ; ".join(["%s %s"%(i[0],i[1]) for i in scores]))
-            # trie par pseudo
-            scores.sort(lambda x,y:cmp(x[0],y[0]))
-            scores.reverse()
-            serv.privmsg(auteur,"Scores by pseudo : "+" ; ".join(["%s %s"%(i[0],i[1]) for i in scores]))
+            if len(message)==1:
+                scores=self.get_scores().items()
+                # trie par score
+                scores.sort(lambda x,y:cmp(x[1],y[1]))
+                scores.reverse()
+                serv.privmsg(auteur,"Scores by score : "+" ; ".join(["%s %s"%(i[0],i[1]) for i in scores]))
+                # trie par pseudo
+                scores.sort(lambda x,y:cmp(x[0].lower(),y[0].lower()))
+                scores.reverse()
+                serv.privmsg(auteur,"Scores by pseudo : "+" ; ".join(["%s %s"%(i[0],i[1]) for i in scores]))
+            elif auteur in self.overops:
+                souscmd=message[1].lower()
+                if souscmd=="del":
+                    if len(message)==3:
+                        todelete=message[2]
+                        scores=self.get_scores()
+                        if scores.has_key(todelete):
+                            del scores[todelete]
+                            self.save_scores(scores)
+                            serv.privmsg(auteur,"Score de %s supprimé"%(todelete))
+                        else:
+                            serv.privmsg(auteur,"Ce score n'existe pas : %s"%(todelete))
+                    else:
+                        serv.privmsg(auteur,"Syntaxe : SCORES DEL <pseudo>")
+                elif souscmd in ["add","sub"]:
+                    if len(message)==4:
+                        toadd,val=message[2],message[3]
+                        try:
+                            val=int(val)
+                        except ValueError:
+                            serv.privmsg(auteur,"Syntaxe : SCORES {ADD|SUB} <pseudo> <n>")
+                            return
+                        if souscmd=="sub":
+                            val=-val
+                        self.add_score(toadd,val)
+                        serv.privmsg(auteur,"Done")
+                    else:
+                        serv.privmsg(auteur,"Syntaxe : SCORES {ADD|SUB} <pseudo> <n>")
+                else:
+                    serv.privmsg(auteur,"Syntaxe : SCORES {DEL|ADD|SUB} <pseudo> [<n>]")
+            else:
+                notunderstood=True
         else:
             notunderstood=True
         if notunderstood:
@@ -385,7 +448,7 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
                 if re.match(tolere(answer_regexp),unicode(message,"utf8").lower()):
                     answer=self.play_status[canal][4]
                     serv.privmsg(canal,"%s: bravo ! (C'était %s)"%(auteur,answer))
-                    self.scoreplus(auteur)
+                    self.add_score(auteur,1)
                     token=time.time()
                     self.play_status[canal]=[0,token]
                     serv.execute_delayed(random.randrange(Ttrig*5,Ttrig*10),self.start_enigme,(serv,canal,token))
@@ -395,12 +458,12 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
         f.close()
         return scores
 
-    def scoreplus(self,pseudo):
+    def add_score(self,pseudo,value):
         scores=self.get_scores()
         if scores.has_key(pseudo):
-            scores[pseudo]+=1
+            scores[pseudo]+=value
         else:
-            scores[pseudo]=1
+            scores[pseudo]=value
         self.save_scores(scores)
 
     def save_scores(self,scores):