generated from Nemesis/Exemple
ne pas prendre en compte ses propres messages
This commit is contained in:
parent
60f97a5533
commit
0ad9c5665e
1 changed files with 65 additions and 31 deletions
96
asmodee.py
96
asmodee.py
|
@ -42,6 +42,7 @@ admins = [] # Admins du bot
|
|||
modos = {} # Moderateurs des salons
|
||||
modules = {} # Modules activés par salon
|
||||
liste_mod = [] # Modules disponibles
|
||||
USERNAME = ""
|
||||
|
||||
# Chargement des données persistantes
|
||||
def horloge_read():
|
||||
|
@ -52,7 +53,7 @@ def horloge_read():
|
|||
clock = loader.load()
|
||||
except:
|
||||
clock = {}
|
||||
|
||||
|
||||
def stats_read():
|
||||
global stats
|
||||
try:
|
||||
|
@ -61,7 +62,7 @@ def stats_read():
|
|||
stats = loader.load()
|
||||
except:
|
||||
stats = {}
|
||||
|
||||
|
||||
def quotes_read():
|
||||
global quotes
|
||||
try:
|
||||
|
@ -80,7 +81,7 @@ def citations_read():
|
|||
except:
|
||||
citations = {}
|
||||
|
||||
|
||||
|
||||
def bieres_read():
|
||||
global bieres
|
||||
try:
|
||||
|
@ -152,6 +153,15 @@ def signal_handler(signal, frame): # Sauvegarder les données persistantes avant
|
|||
save_obj()
|
||||
sys.exit(0)
|
||||
|
||||
def not_myself(f):
|
||||
def handler(room, event):
|
||||
if event['sender'] == USERNAME:
|
||||
return
|
||||
|
||||
f(room, event)
|
||||
|
||||
return handler
|
||||
|
||||
class Userstats: #Pour garder des stats sur les users
|
||||
def __init__(self,room,user,nick):
|
||||
self.room = room
|
||||
|
@ -313,7 +323,6 @@ def verifPMRoom(room, event): # Pour obtenir ou créer un salon pour les message
|
|||
print("il etait deja dedans, c'est sale")
|
||||
return salon
|
||||
|
||||
|
||||
def getNick(room, event): # Obtenir le DisplayName à partir du mxid
|
||||
members = room.get_joined_members()
|
||||
nick = ""
|
||||
|
@ -330,7 +339,8 @@ def getNick(room, event): # Obtenir le DisplayName à partir du mxid
|
|||
except:
|
||||
nick = event['sender']
|
||||
return(nick)
|
||||
|
||||
|
||||
@not_myself
|
||||
def card(room, event): # Tirer une carte du paquet sans la retirer
|
||||
global modules
|
||||
try:
|
||||
|
@ -341,6 +351,7 @@ def card(room, event): # Tirer une carte du paquet sans la retirer
|
|||
reponse = cartes_base[random.randrange(0,len(cartes_base))]
|
||||
msg(room,reponse)
|
||||
|
||||
@not_myself
|
||||
def carte(room, event): # Tirer une carte du paquet en la retirant ensuite
|
||||
global modules
|
||||
try:
|
||||
|
@ -361,8 +372,10 @@ def carte(room, event): # Tirer une carte du paquet en la retirant ensuite
|
|||
msg(room,cartes[i])
|
||||
cartes.pop(i)
|
||||
|
||||
@not_myself
|
||||
def help(room, event): # Aide en message privé
|
||||
help_center(room,event,"help",True)
|
||||
@not_myself
|
||||
def aide(room, event): # Aide dans le salon
|
||||
help_center(room,event,"aide",False)
|
||||
def help_center(room,event,name,private): # Aide sur les commandes disponibles
|
||||
|
@ -530,6 +543,7 @@ def rolls(result,jet,type,nb,explosif,noadd,wild,f,g,ars,relance,mitige,z): # La
|
|||
#print("fin rolls : " + str(result) + "|" + str(total) + "|" + str(jet))
|
||||
return (result,total,jet)
|
||||
|
||||
@not_myself
|
||||
def entryPoint(room, event): # Analyse des commandes ":", point d'entrée pour les jets de dés
|
||||
global modules
|
||||
try:
|
||||
|
@ -811,7 +825,8 @@ def rollTypePoint(): # Parser le nombre de faces du dé
|
|||
def reponses(room, phrases, content=False): # Afficher une réponse aléatoire dans la liste
|
||||
i = random.randrange(0,len(phrases))
|
||||
msg(room,phrases[i],content)
|
||||
|
||||
|
||||
@not_myself
|
||||
def jdr(room, event):
|
||||
global modules
|
||||
try:
|
||||
|
@ -826,6 +841,7 @@ def jdr(room, event):
|
|||
phrases.append("Bon, c'est quand la prochaine partie " + nick + "?")
|
||||
reponses(room, phrases)
|
||||
|
||||
@not_myself
|
||||
def gens(room, event):
|
||||
global modules
|
||||
try:
|
||||
|
@ -854,6 +870,7 @@ def va(room, event):
|
|||
phrases.append("Attention a " + nick + ", la suite est 'not safe for depression'")
|
||||
reponses(room, phrases)
|
||||
|
||||
@not_myself
|
||||
def hi_callback(room, event):
|
||||
global modules
|
||||
try:
|
||||
|
@ -870,6 +887,7 @@ def hi_callback(room, event):
|
|||
phrases.append("Oh non, et voilà de nouveau " + nick + "...")
|
||||
reponses(room, phrases)
|
||||
|
||||
@not_myself
|
||||
def liste(room, event): # Afficher un élement aléatoire d'une liste fournie
|
||||
global modules
|
||||
try:
|
||||
|
@ -879,7 +897,7 @@ def liste(room, event): # Afficher un élement aléatoire d'une liste fournie
|
|||
if (modules[room.room_id, 'liste']):
|
||||
res = []
|
||||
nick = getNick(room,event)
|
||||
|
||||
|
||||
args = event['content']['body'].split()
|
||||
args.pop(0)
|
||||
try:
|
||||
|
@ -897,6 +915,7 @@ def liste(room, event): # Afficher un élement aléatoire d'une liste fournie
|
|||
else:
|
||||
msg(room,"Utilisation : !liste <options/de/la/liste> [nombre d elements]")
|
||||
|
||||
@not_myself
|
||||
def cristal(room, event): # Affiche une réponse à une question posée
|
||||
global modules
|
||||
try:
|
||||
|
@ -905,7 +924,7 @@ def cristal(room, event): # Affiche une réponse à une question posée
|
|||
modules[room.room_id, 'cristal'] = False
|
||||
if (modules[room.room_id, 'cristal']):
|
||||
nick = getNick(room,event)
|
||||
|
||||
|
||||
args = event['content']['body'].split()
|
||||
args.pop(0)
|
||||
if (len(args) < 2 or args[len(args)-1][-1] != '?'):
|
||||
|
@ -974,6 +993,7 @@ def cristal(room, event): # Affiche une réponse à une question posée
|
|||
phrases.append("Tu portes quelque chose de sombre, je refuse de me laisser souiller.")
|
||||
reponses(room, phrases)
|
||||
|
||||
@not_myself
|
||||
def horloge(room, event): # Gestion des horloges PBTA
|
||||
global modules
|
||||
try:
|
||||
|
@ -983,7 +1003,7 @@ def horloge(room, event): # Gestion des horloges PBTA
|
|||
if (modules[room.room_id, 'horloge']):
|
||||
global clock
|
||||
nick = getNick(room,event)
|
||||
|
||||
|
||||
args = event['content']['body'].split()
|
||||
args.pop(0)
|
||||
if (len(args) == 0):
|
||||
|
@ -1016,7 +1036,8 @@ def horloge(room, event): # Gestion des horloges PBTA
|
|||
del clock[room.room_id, ' '.join(args)]
|
||||
else:
|
||||
msg(room,"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.")
|
||||
|
||||
|
||||
@not_myself
|
||||
def statistiques(room,event): # Enregistrement des statistiques
|
||||
global modules
|
||||
try:
|
||||
|
@ -1029,7 +1050,7 @@ def statistiques(room,event): # Enregistrement des statistiques
|
|||
user = event['sender']
|
||||
usrstats1 = 0
|
||||
usrstats2 = 0
|
||||
|
||||
|
||||
if ('body' in event['content']):
|
||||
try:
|
||||
usrstats1 = stats[room.room_id,user]
|
||||
|
@ -1039,12 +1060,12 @@ def statistiques(room,event): # Enregistrement des statistiques
|
|||
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 (usrstats1.mess >= usrstats2.mess):
|
||||
usrstats2.mess = usrstats1.mess + 1
|
||||
|
@ -1052,7 +1073,7 @@ def statistiques(room,event): # Enregistrement des statistiques
|
|||
else:
|
||||
usrstats1.mess = usrstats2.mess + 1
|
||||
usrstats2.mess = usrstats1.mess
|
||||
|
||||
|
||||
# recup nb lettres +lettres phrase, lettres phrases sinon
|
||||
if (usrstats1.char >= usrstats2.char):
|
||||
usrstats2.char = usrstats1.char + len(event['content']['body'])
|
||||
|
@ -1060,7 +1081,7 @@ def statistiques(room,event): # Enregistrement des statistiques
|
|||
else:
|
||||
usrstats1.char = usrstats2.char + len(event['content']['body'])
|
||||
usrstats2.char = usrstats1.char
|
||||
|
||||
|
||||
# si kapoue, recup nb kapoue +1, 1 sinon
|
||||
if (re.match(".*KAPOUE|.*[Kk]apoue", event['content']['body'])):
|
||||
if (usrstats1.kapoue >= usrstats2.kapoue):
|
||||
|
@ -1069,11 +1090,12 @@ def statistiques(room,event): # Enregistrement des statistiques
|
|||
else:
|
||||
usrstats1.kapoue = usrstats2.kapoue + 1
|
||||
usrstats2.kapoue = usrstats1.kapoue
|
||||
|
||||
|
||||
# insertion des objets
|
||||
stats[room.room_id,user] = usrstats1
|
||||
stats[room.room_id,nick] = usrstats2
|
||||
|
||||
|
||||
@not_myself
|
||||
def last(room,event): # Regarde la dernière fois que quelqu'un a écrit un message
|
||||
global modules
|
||||
try:
|
||||
|
@ -1097,7 +1119,8 @@ def last(room,event): # Regarde la dernière fois que quelqu'un a écrit un mess
|
|||
#for cle,valeur in stats.items():
|
||||
# if (cle[0] == room.room_id):
|
||||
# msg(room,cle[1] + "\n")
|
||||
|
||||
|
||||
@not_myself
|
||||
def actif(room,event): # Stats d'activité d'une personne
|
||||
global modules
|
||||
try:
|
||||
|
@ -1119,7 +1142,8 @@ def actif(room,event): # Stats d'activité d'une personne
|
|||
msg(room,usrstats.nick + " a poste " + str(usrstats.mess) + " messages avec une moyenne de " + moy + " caracteres par message")
|
||||
except:
|
||||
msg(room,pers + " : Personne non reconnue\n")
|
||||
|
||||
|
||||
@not_myself
|
||||
def nb_kap(room,event):
|
||||
global modules
|
||||
try:
|
||||
|
@ -1147,7 +1171,8 @@ def nb_kap(room,event):
|
|||
msg(room,usrstats.nick + " a crié " + str(usrstats.kapoue) + " KAPOUE! Faites le manger par des fourmis! Pauvres bêtes...")
|
||||
except:
|
||||
msg(room,pers + " : Personne non reconnue\n")
|
||||
|
||||
|
||||
@not_myself
|
||||
def quote(room,event): # Gestion des citations
|
||||
global modules
|
||||
try:
|
||||
|
@ -1163,7 +1188,7 @@ def quote(room,event): # Gestion des citations
|
|||
famous = quotes[room.room_id]
|
||||
except:
|
||||
famous = {}
|
||||
|
||||
|
||||
if (len(args) > 3 and args[0] == "add"):
|
||||
#ajoute une quote
|
||||
args.pop(0)
|
||||
|
@ -1262,6 +1287,7 @@ def quote(room,event): # Gestion des citations
|
|||
else:
|
||||
msg(room,"Je n'ai pas de citations pour ce salon")
|
||||
|
||||
@not_myself
|
||||
def addquote(room,event): # enregistrer les citations mode reponses matrix
|
||||
global modules
|
||||
try:
|
||||
|
@ -1275,12 +1301,14 @@ def addquote(room,event): # enregistrer les citations mode reponses matrix
|
|||
if len(json.dumps(content)) > 420:
|
||||
# Enlève la commande de la citation
|
||||
try:
|
||||
content['body'] = content['body'].replace("\naddquote", " ")
|
||||
content['body'] = content['body'].replace("\n!addquote", " ")
|
||||
content['body'] = content['body'].replace("\n!", "\n")
|
||||
except:
|
||||
print("\n\nerreur body " + json.dumps(content))
|
||||
try:
|
||||
content['formatted_body'] = content['formatted_body'].replace("<p>addquote</p>\n", "")
|
||||
content['formatted_body'] = content['formatted_body'].replace("addquote", "")
|
||||
content['formatted_body'] = content['formatted_body'].replace("<p>!addquote</p>\n", "")
|
||||
content['formatted_body'] = content['formatted_body'].replace("!addquote", "")
|
||||
content['formatted_body'] = content['formatted_body'].replace("<p>!", "<p>")
|
||||
except:
|
||||
print("\n\nerreur formatted_body " + json.dumps(content))
|
||||
|
||||
|
@ -1306,6 +1334,7 @@ def addquote(room,event): # enregistrer les citations mode reponses matrix
|
|||
msg(room,"Ajout de la citation de " + auteur + ":")
|
||||
bot.client.api.send_message_event(room.room_id, 'm.room.message', content, None, None)
|
||||
|
||||
@not_myself
|
||||
def showquote(room, event): # afficher les citations mode reponse matrix
|
||||
global modules
|
||||
try:
|
||||
|
@ -1341,8 +1370,8 @@ def showquote(room, event): # afficher les citations mode reponse matrix
|
|||
reponses(room,phrases,True)
|
||||
else:
|
||||
msg(room,"Je n'ai pas de citations pour ce salon")
|
||||
|
||||
|
||||
|
||||
@not_myself
|
||||
def biere(room,event): # Gestion des boissons
|
||||
global modules
|
||||
try:
|
||||
|
@ -1476,6 +1505,7 @@ def biere(room,event): # Gestion des boissons
|
|||
else:
|
||||
msg(room,"Je n'ai pas de breuvages pour ce salon")
|
||||
|
||||
@not_myself
|
||||
def boissons(room,event): # Gestion des alias de boissons
|
||||
global modules
|
||||
try:
|
||||
|
@ -1485,7 +1515,7 @@ def boissons(room,event): # Gestion des alias de boissons
|
|||
if (modules[room.room_id, 'biere']):
|
||||
boisson = ""
|
||||
elu = ""
|
||||
|
||||
|
||||
args = event['content']['body'].split()
|
||||
try:
|
||||
boisson = args[0][1:]
|
||||
|
@ -1495,7 +1525,7 @@ def boissons(room,event): # Gestion des alias de boissons
|
|||
|
||||
if (len(args) > 0):
|
||||
elu = " ".join(args)
|
||||
|
||||
|
||||
if (len(elu) > 0 and len(boisson) > 0):
|
||||
event['content']['body'] = "!biere give " + elu + ":" + boisson
|
||||
elif (len(elu) > 0):
|
||||
|
@ -1507,6 +1537,7 @@ def boissons(room,event): # Gestion des alias de boissons
|
|||
|
||||
biere(room,event)
|
||||
|
||||
@not_myself
|
||||
def accueil(room,event): # Mettre un message d'accueil
|
||||
global modules
|
||||
try:
|
||||
|
@ -1523,10 +1554,10 @@ def accueil(room,event): # Mettre un message d'accueil
|
|||
if (len(args) > 0):
|
||||
welcome[room.room_id] = reponse
|
||||
msg(room,"Le message d'accueil est désormais : " + reponse)
|
||||
|
||||
|
||||
else:
|
||||
msg(salon,"Vous n'êtes pas autorisés à modifier le message d'accueil.")
|
||||
|
||||
|
||||
def bienvenue(event): # Affichage d'un message d'accueil aux nouveaux venus
|
||||
room_id = event['room_id']
|
||||
room = bot.client.rooms[room_id]
|
||||
|
@ -1556,6 +1587,7 @@ def bienvenue(event): # Affichage d'un message d'accueil aux nouveaux venus
|
|||
if (membership == "join" and prev_member != "join"):
|
||||
msg(room,"Bienvenue sur " + alias + ", " + nick + ". " + reponse)
|
||||
|
||||
@not_myself
|
||||
def modo(room,event): # Definition d'un moderateur
|
||||
global modos
|
||||
lmod = []
|
||||
|
@ -1590,6 +1622,7 @@ def modo(room,event): # Definition d'un moderateur
|
|||
else:
|
||||
msg(salon,"Vous n'êtes pas autorisés à définir les modérateurs.")
|
||||
|
||||
@not_myself
|
||||
def module(room,event): # Definition des modules d'un salon
|
||||
lmod = []
|
||||
try:
|
||||
|
@ -1662,6 +1695,7 @@ def invitations(room_id, state): # Reponse aux invitations
|
|||
main()
|
||||
|
||||
def main():
|
||||
global USERNAME
|
||||
config = configparser.ConfigParser()
|
||||
config.read('asmodee.ini')
|
||||
USERNAME = "" # Bot's username
|
||||
|
@ -1761,7 +1795,7 @@ def main():
|
|||
quote_handler = MCommandHandler("quote", quote)
|
||||
bot.add_handler(quote_handler)
|
||||
citations_read()
|
||||
addquote_handler = MEndHandler("addquote", addquote)
|
||||
addquote_handler = MEndHandler("!addquote", addquote)
|
||||
bot.add_handler(addquote_handler)
|
||||
showquote_handler = MCommandHandler("showquote", showquote)
|
||||
bot.add_handler(showquote_handler)
|
||||
|
|
Loading…
Reference in a new issue