Browse Source

stats

master
nemesis 6 years ago
parent
commit
046529b1db
  1. 105
      asmodee.py
  2. 11
      mall_handler.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
@ -36,13 +40,34 @@ def horloge_read():
clock = loader.load()
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

@ -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…
Cancel
Save