generated from Nemesis/Exemple
stats
This commit is contained in:
parent
ec976c637e
commit
046529b1db
2 changed files with 114 additions and 2 deletions
105
asmodee.py
105
asmodee.py
|
@ -8,12 +8,15 @@ import signal
|
|||
import sys
|
||||
import pickle
|
||||
import time
|
||||
from datetime import datetime
|
||||
|
||||
from matrix_bot_api.matrix_bot_api import MatrixBotAPI
|
||||
from matrix_bot_api.mregex_handler import MRegexHandler
|
||||
from matrix_bot_api.mcommand_handler import MCommandHandler
|
||||
from matrix_client.client import MatrixClient
|
||||
|
||||
from mall_handler import MAllHandler
|
||||
|
||||
# Version initiale par Philippe Depriester et Clement Gauche
|
||||
|
||||
cartes_base = ["As de carreau", "2 de carreau", "3 de carreau", "4 de carreau", "5 de carreau", "6 de carreau", \
|
||||
|
@ -27,6 +30,7 @@ cartes_base = ["As de carreau", "2 de carreau", "3 de carreau", "4 de carreau",
|
|||
cartes=list(cartes_base)
|
||||
bot = None
|
||||
clock = {}
|
||||
stats = {}
|
||||
|
||||
def horloge_read():
|
||||
global clock
|
||||
|
@ -37,12 +41,33 @@ def horloge_read():
|
|||
except:
|
||||
clock = {}
|
||||
|
||||
def stats_read():
|
||||
global stats
|
||||
try:
|
||||
with open("stats", "rb") as fichier:
|
||||
loader = pickle.Unpickler(fichier)
|
||||
stats = loader.load()
|
||||
except:
|
||||
stats = {}
|
||||
|
||||
def signal_handler(signal, frame):
|
||||
with open("horloge", "wb") as fichier:
|
||||
saver = pickle.Pickler(fichier)
|
||||
saver.dump(clock)
|
||||
with open("stats", "wb") as fichier:
|
||||
saver = pickle.Pickler(fichier)
|
||||
saver.dump(stats)
|
||||
sys.exit(0)
|
||||
|
||||
class Userstats: #Pour garder des stats sur les users
|
||||
def __init__(self,room,user,nick):
|
||||
self.room = room
|
||||
self.user = user
|
||||
self.nick = nick.strip()
|
||||
self.date = 0
|
||||
self.mess = 0
|
||||
self.char = 0
|
||||
self.kapoue = 0
|
||||
|
||||
class Parser: #Pour parser la ligne de commande
|
||||
def __init__(self, str, nick, room):
|
||||
|
@ -134,10 +159,12 @@ def getNick(room, event):
|
|||
members = room.get_joined_members()
|
||||
nick = ""
|
||||
try:
|
||||
#nick = members[event['sender']]['displayname']
|
||||
nick = [user.get_friendly_name() for user in members if user.user_id == event['sender']][0]
|
||||
except:
|
||||
nick = "Voisin du dessus"
|
||||
try:
|
||||
nick = members[event['sender']]['displayname']
|
||||
except:
|
||||
nick = event['sender']
|
||||
return(nick)
|
||||
|
||||
def card(room, event):
|
||||
|
@ -729,6 +756,73 @@ def horloge(room, event):
|
|||
else:
|
||||
room.send_text("Utilisation : \n- !horloge : Affiche les horloges. \n- !horloge <nom> <niveau> : Place ou crée l'horloge au niveau spécifié.\n- !horloge del <nom> : Supprime l'horloge.")
|
||||
|
||||
def statistiques(room,event):
|
||||
global stats
|
||||
nick = getNick(room,event)
|
||||
user = event['sender']
|
||||
usrstats1 = 0
|
||||
usrstats2 = 0
|
||||
|
||||
try:
|
||||
usrstats1 = stats[room.room_id,user]
|
||||
except:
|
||||
usrstats1 = Userstats(room.room_id,user,nick)
|
||||
try:
|
||||
usrstats2 = stats[room.room_id,nick]
|
||||
except:
|
||||
usrstats2 = Userstats(room.room_id,user,nick)
|
||||
|
||||
# date de la phrase
|
||||
date = datetime.now()
|
||||
usrstats1.date = date
|
||||
usrstats2.date = date
|
||||
|
||||
# recup nb phrases +1, 1 sinon
|
||||
if (userstats1.mess >= userstats2.mess):
|
||||
userstats2.mess = userstats1.mess + 1
|
||||
userstats1.mess = userstats2.mess
|
||||
else:
|
||||
userstats1.mess = userstats2.mess + 1
|
||||
userstats2.mess = userstats1.mess
|
||||
|
||||
# recup nb lettres +lettres phrase, lettres phrases sinon
|
||||
if (userstats1.char >= userstats2.char):
|
||||
userstats2.char = userstats1.char + len(event['content']['body'])
|
||||
userstats1.char = userstats2.char
|
||||
else:
|
||||
userstats1.char = userstats2.char + len(event['content']['body'])
|
||||
userstats2.char = userstats1.char
|
||||
|
||||
# si kapoue, recup nb kapoue +1, 1 sinon
|
||||
if (re.match("KAPOUE|[Kk]apoue", self._str)):
|
||||
if (userstats1.kapoue >= userstats2.kapoue):
|
||||
userstats2.kapoue = userstats1.kapoue + 1
|
||||
userstats1.kapoue = userstats2.kapoue
|
||||
else:
|
||||
userstats1.kapoue = userstats2.kapoue + 1
|
||||
userstats2.kapoue = userstats1.kapoue
|
||||
|
||||
# insertion des objets
|
||||
stats[room.room_id,user] = usrstats1
|
||||
stats[room.room_id,nick] = usrstats2
|
||||
|
||||
def last(room,event):
|
||||
global stats
|
||||
args = event['content']['body'].split()
|
||||
args.pop(0)
|
||||
if (len(args) == 0):
|
||||
room.send_text("!last <name ou id> : Date de dernier emssage de la personne")
|
||||
else:
|
||||
pers=args[0]
|
||||
try:
|
||||
usrstats = stats[pers]
|
||||
room.send_text("J'ai vu " + usrstats.nick + " poster pour la derniere fois le " + usrstats.date)
|
||||
except:
|
||||
room.send_text("Personne non reconnue : Personnes enregistrees :\n")
|
||||
for cle,valeur in stats.items():
|
||||
room.send_text(cle + "\n")
|
||||
|
||||
|
||||
def invitations(room_id, state):
|
||||
global bot
|
||||
try:
|
||||
|
@ -799,6 +893,13 @@ def main():
|
|||
horloge_handler = MCommandHandler("horloge", horloge)
|
||||
bot.add_handler(horloge_handler)
|
||||
|
||||
# stats
|
||||
stats_read()
|
||||
stats_handler = MAllHandler(statistiques)
|
||||
bot.add_handler(stats_handler)
|
||||
last_handler = MCommandHandler("last", last)
|
||||
bot.add_handler(last_handler)
|
||||
|
||||
# Invitations
|
||||
bot.client.add_invite_listener(invitations)
|
||||
|
||||
|
|
11
mall_handler.py
Normal file
11
mall_handler.py
Normal file
|
@ -0,0 +1,11 @@
|
|||
# coding: utf8
|
||||
from matrix_bot_api.mhandler import MHandler
|
||||
|
||||
|
||||
class MAllHandler(MHandler):
|
||||
|
||||
# command - String of command to handle
|
||||
# handle_callback - Function to call if message contains command
|
||||
# cmd_char - Character that denotes a command. '!' by default
|
||||
def __init__(self, handle_callback):
|
||||
MHandler.__init__(self, True, handle_callback)
|
Loading…
Reference in a new issue