Browse Source

biere / PM

master
nemesis 2 years ago
parent
commit
1676a62a17
  1. 145
      asmodee.py

145
asmodee.py

@ -13,6 +13,8 @@ import threading
import asyncio
import nio
from datetime import datetime,timedelta
# Var
bot = None
PREFIX = '!'
@ -22,6 +24,7 @@ USERNAME = ""
admins = [] # Admins du bot
modos = {} # Moderateurs des salons
modules = {} # Modules activés par salon
prive = {} # Les espaces de message privés du bot avec les utilisateurs
liste_mod = [] # Modules disponibles
citations = {} #addquote
bieres = {} # Boissons a offrir
@ -113,6 +116,15 @@ def modules_read():
modules = loader.load()
except:
modules = {}
def prive_read():
global prive
try:
with open("prive", "rb") as fichier:
loader = pickle.Unpickler(fichier)
prive = loader.load()
except:
prive = {}
def save_obj(room=None, event=None):
with open("moderateurs", "wb") as fichier:
@ -121,6 +133,9 @@ def save_obj(room=None, event=None):
with open("modules", "wb") as fichier:
saver = pickle.Pickler(fichier)
saver.dump(modules)
with open("prive", "wb") as fichier:
saver = pickle.Pickler(fichier)
saver.dump(prive)
if ('horloge' in liste_mod):
with open("horloge", "wb") as fichier:
saver = pickle.Pickler(fichier)
@ -618,13 +633,18 @@ def getUser(message):
def getNick(room, message): # Obtenir le DisplayName à partir du mxid.
sender = getUser(message)
return(room.user_name(sender))
nick = None
try:
nick = room.user_name(sender).split(' ')[0]
except:
nick = room.user_name(sender)
return(nick)
async def msg(room,mess,sender,content=False):
try:
try:
lmod = modos[room.room_id]
if (sender not in admins and sender not in lmod):
lmod = modos.get(room.room_id)
if (sender not in admins and lmod != None and sender not in lmod):
mess = mess.replace('@room', 'tout le monde')
except:
try:
@ -671,7 +691,7 @@ async def modo(room,message): # Definition d'un moderateur
else:
await msg(room,"\n".join(lmod),sender)
else:
await msg(salon,"Vous n'êtes pas autorisés à définir les modérateurs.",sender)
await msg(room,"Vous n'êtes pas autorisés à définir les modérateurs.",sender)
async def module(room,message): # Definition des modules d'un salon
lmod = []
@ -814,6 +834,33 @@ async def horloge(room, message): # Gestion des horloges PBTA
async def reponses(room, phrases, content=False): # Afficher une réponse aléatoire dans la liste
i = random.randrange(0,len(phrases))
await msg(room,phrases[i],"reponses",content)
async def verifPMRoom(room, message): # Pour obtenir ou créer un salon pour les messages privés avec l'utilisateur
global prive
nick = ""
sender = ""
sender = getUser(message)
nick = getNick(room, message)
client_id = bot.creds.username.split(':')[0].split('@')[1]
client_host = bot.creds.username.split(':')[1]
room_nick = client_id + "_" + nick + "_b"
salon = None
room_id = prive.get(sender)
if (room_id):
await bot.async_client.room_invite(room_id=room_id, user_id=sender)
new_salon = nio.rooms.MatrixRoom(room_id, client_id)
new_salon.name="Asmodee"
new_salon.topic="Informations d'Asmodee"
new_salon.is_direct=True
return(new_salon)
else:
salon = await bot.async_client.room_create(alias=room_nick, name="Asmodee", topic="Informations d'Asmodee",is_direct=True,invite=[sender])
if isinstance(salon, nio.responses.RoomCreateError):
print("Impossible de creer : " + room_nick + " pour " + sender)
return(room)
else:
prive[sender]=salon.room_id
return(salon)
async def biere(room,message): # Gestion des boissons
global modules
@ -825,7 +872,7 @@ async def biere(room,message): # Gestion des boissons
if (modules[room.room_id, 'biere']):
sender = getUser(message)
mess = getMessage(message)
lmod = modos[room.room_id]
lmod = modos.get(room.room_id)
if (sender in admins or sender in lmod):
power = 1
global bieres
@ -834,7 +881,7 @@ async def biere(room,message): # Gestion des boissons
breuvages = {}
give = False
elu = ""
envoyeur = getNick(message)
envoyeur = getNick(room, message)
try:
breuvages = bieres[room.room_id]
@ -866,48 +913,56 @@ async def biere(room,message): # Gestion des boissons
tps = datetime.now().microsecond
breuvages[nick,tps] = citation
bieres[room.room_id] = breuvages
await msg(room,"Ajout du breuvage " + nick + ":" + citation,event['sender'])
await msg(room,"Ajout du breuvage " + nick + ":" + citation,sender)
else:
# message d'aide
await msg(room,"!biere add <nick>:<citation>",sender)
#elif (len(args) > 0 and args[0] == "list"):
elif (len(args) > 0 and args[0] == "list"):
# liste les quotes
# args.pop(0)
# salon = verifPMRoom(room,event)
# if (len(args) == 0):
args.pop(0)
salon = await verifPMRoom(room,message)
print(salon)
if (len(args) == 0):
# Liste les breuvages du salon
# reponse = "Voici les reponses du salon " + room.room_id + "\n"
# if (len(room.aliases) > 0):
# reponse = reponse + "(alias : " + room.aliases[0] + "\n"
# for cle,valeur in breuvages.items():
# reponse = reponse + cle[0] + " / " + str(cle[1]) + " : " + valeur + "\n"
# if (len(reponse) > 500):
# msg(salon,reponse,event['sender'])
# reponse = ""
# msg(salon,reponse,event['sender'])
# elif (args[0] == "all"):
# # tous les breuvages de tous les salons
# reponse = "Les breuvages de tous les salons : " + "\n"
# msg(salon,reponse,event['sender'])
# for rid,fame in bieres.items():
# reponse = "Voici les reponses du salon " + rid + "\n"
# for cle,valeur in fame.items():
# reponse = reponse + cle[0] + " / " + str(cle[1]) + " : " + valeur + "\n"
# if (len(reponse) > 500):
# msg(salon,reponse,event['sender'])
# reponse = ""
# msg(salon,reponse,event['sender'])
# else:
# # les breuvages du pseudo spécifié
# nick = " ".join(args)
# reponse = "Voici les reponses du breuvage " + nick + "\n"
# for cle,valeur in breuvages.items():
# if (cle[0] == nick):
# reponse = reponse + cle[0] + " / " + str(cle[1]) + " : " + valeur + "\n"
# msg(salon,reponse,event['sender'])
reponse = "Voici les reponses du salon " + room.room_id + "\n"
alias = None
if room.name:
alias = room.name
elif room.canonical_alias:
alias = room.canonical_alias
elif room.names:
alias = room.names[0]
else:
alias = ""
reponse = reponse + "(alias : " + alias + ")\n"
for cle,valeur in breuvages.items():
reponse = reponse + cle[0] + " / " + str(cle[1]) + " : " + valeur + "\n"
if (len(reponse) > 500):
await msg(salon,reponse,sender)
reponse = ""
await msg(salon,reponse,sender)
elif (args[0] == "all"):
# tous les breuvages de tous les salons
reponse = "Les breuvages de tous les salons : " + "\n"
await msg(salon,reponse,sender)
for rid,fame in bieres.items():
reponse = "Voici les reponses du salon " + rid + "\n"
for cle,valeur in fame.items():
reponse = reponse + cle[0] + " / " + str(cle[1]) + " : " + valeur + "\n"
if (len(reponse) > 500):
await msg(salon,reponse,sender)
reponse = ""
await msg(salon,reponse,sender)
else:
# les breuvages du pseudo spécifié
nick = " ".join(args)
reponse = "Voici les reponses du breuvage " + nick + "\n"
for cle,valeur in breuvages.items():
if (cle[0] == nick):
reponse = reponse + cle[0] + " / " + str(cle[1]) + " : " + valeur + "\n"
await msg(salon,reponse,sender)
elif (len(args) > 1 and args[0] == "del"):
# salon = verifPMRoom(room,event)
salon = room.room_id
salon = await verifPMRoom(room,message)
lmod = modos[room.room_id]
if (sender in admins):
id = args[1]
@ -957,7 +1012,7 @@ async def biere(room,message): # Gestion des boissons
if (len(phrases) > 0 ):
await reponses(room,phrases)
else:
await msg(room,"Je n'ai pas de breuvages pour ce salon",event['sender'])
await msg(room,"Je n'ai pas de breuvages pour ce salon",sender)
async def boissons(room,message): # Gestion des alias de boissons
global modules
@ -1027,8 +1082,7 @@ async def salon(room,message): # Gestion des listes de salons recommandes
salons[room.room_id] = famous
await msg(room,"Ajout du salon " + ref + " : " + desc,sender)
elif (len(args) > 1 and args[0] == "del"):
#salon = verifPMRoom(room,event)
salon = room.room_id
salon = await verifPMRoom(room,message)
lmod = modos[room.room_id]
if (sender in admins):
id = args[1]
@ -1233,6 +1287,7 @@ def main():
modules_read()
modos_read()
prive_read()
if ('horloge' in liste_mod):
horloge_read()
if ('quote' in liste_mod):

Loading…
Cancel
Save