generated from Nemesis/Exemple
biere / PM
This commit is contained in:
parent
1705d754a6
commit
1676a62a17
1 changed files with 100 additions and 45 deletions
145
asmodee.py
145
asmodee.py
|
@ -13,6 +13,8 @@ import threading
|
||||||
import asyncio
|
import asyncio
|
||||||
import nio
|
import nio
|
||||||
|
|
||||||
|
from datetime import datetime,timedelta
|
||||||
|
|
||||||
# Var
|
# Var
|
||||||
bot = None
|
bot = None
|
||||||
PREFIX = '!'
|
PREFIX = '!'
|
||||||
|
@ -22,6 +24,7 @@ USERNAME = ""
|
||||||
admins = [] # Admins du bot
|
admins = [] # Admins du bot
|
||||||
modos = {} # Moderateurs des salons
|
modos = {} # Moderateurs des salons
|
||||||
modules = {} # Modules activés par salon
|
modules = {} # Modules activés par salon
|
||||||
|
prive = {} # Les espaces de message privés du bot avec les utilisateurs
|
||||||
liste_mod = [] # Modules disponibles
|
liste_mod = [] # Modules disponibles
|
||||||
citations = {} #addquote
|
citations = {} #addquote
|
||||||
bieres = {} # Boissons a offrir
|
bieres = {} # Boissons a offrir
|
||||||
|
@ -114,6 +117,15 @@ def modules_read():
|
||||||
except:
|
except:
|
||||||
modules = {}
|
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):
|
def save_obj(room=None, event=None):
|
||||||
with open("moderateurs", "wb") as fichier:
|
with open("moderateurs", "wb") as fichier:
|
||||||
saver = pickle.Pickler(fichier)
|
saver = pickle.Pickler(fichier)
|
||||||
|
@ -121,6 +133,9 @@ def save_obj(room=None, event=None):
|
||||||
with open("modules", "wb") as fichier:
|
with open("modules", "wb") as fichier:
|
||||||
saver = pickle.Pickler(fichier)
|
saver = pickle.Pickler(fichier)
|
||||||
saver.dump(modules)
|
saver.dump(modules)
|
||||||
|
with open("prive", "wb") as fichier:
|
||||||
|
saver = pickle.Pickler(fichier)
|
||||||
|
saver.dump(prive)
|
||||||
if ('horloge' in liste_mod):
|
if ('horloge' in liste_mod):
|
||||||
with open("horloge", "wb") as fichier:
|
with open("horloge", "wb") as fichier:
|
||||||
saver = pickle.Pickler(fichier)
|
saver = pickle.Pickler(fichier)
|
||||||
|
@ -618,13 +633,18 @@ def getUser(message):
|
||||||
|
|
||||||
def getNick(room, message): # Obtenir le DisplayName à partir du mxid.
|
def getNick(room, message): # Obtenir le DisplayName à partir du mxid.
|
||||||
sender = getUser(message)
|
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):
|
async def msg(room,mess,sender,content=False):
|
||||||
try:
|
try:
|
||||||
try:
|
try:
|
||||||
lmod = modos[room.room_id]
|
lmod = modos.get(room.room_id)
|
||||||
if (sender not in admins and sender not in lmod):
|
if (sender not in admins and lmod != None and sender not in lmod):
|
||||||
mess = mess.replace('@room', 'tout le monde')
|
mess = mess.replace('@room', 'tout le monde')
|
||||||
except:
|
except:
|
||||||
try:
|
try:
|
||||||
|
@ -671,7 +691,7 @@ async def modo(room,message): # Definition d'un moderateur
|
||||||
else:
|
else:
|
||||||
await msg(room,"\n".join(lmod),sender)
|
await msg(room,"\n".join(lmod),sender)
|
||||||
else:
|
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
|
async def module(room,message): # Definition des modules d'un salon
|
||||||
lmod = []
|
lmod = []
|
||||||
|
@ -815,6 +835,33 @@ async def reponses(room, phrases, content=False): # Afficher une réponse aléat
|
||||||
i = random.randrange(0,len(phrases))
|
i = random.randrange(0,len(phrases))
|
||||||
await msg(room,phrases[i],"reponses",content)
|
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
|
async def biere(room,message): # Gestion des boissons
|
||||||
global modules
|
global modules
|
||||||
try:
|
try:
|
||||||
|
@ -825,7 +872,7 @@ async def biere(room,message): # Gestion des boissons
|
||||||
if (modules[room.room_id, 'biere']):
|
if (modules[room.room_id, 'biere']):
|
||||||
sender = getUser(message)
|
sender = getUser(message)
|
||||||
mess = getMessage(message)
|
mess = getMessage(message)
|
||||||
lmod = modos[room.room_id]
|
lmod = modos.get(room.room_id)
|
||||||
if (sender in admins or sender in lmod):
|
if (sender in admins or sender in lmod):
|
||||||
power = 1
|
power = 1
|
||||||
global bieres
|
global bieres
|
||||||
|
@ -834,7 +881,7 @@ async def biere(room,message): # Gestion des boissons
|
||||||
breuvages = {}
|
breuvages = {}
|
||||||
give = False
|
give = False
|
||||||
elu = ""
|
elu = ""
|
||||||
envoyeur = getNick(message)
|
envoyeur = getNick(room, message)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
breuvages = bieres[room.room_id]
|
breuvages = bieres[room.room_id]
|
||||||
|
@ -866,48 +913,56 @@ async def biere(room,message): # Gestion des boissons
|
||||||
tps = datetime.now().microsecond
|
tps = datetime.now().microsecond
|
||||||
breuvages[nick,tps] = citation
|
breuvages[nick,tps] = citation
|
||||||
bieres[room.room_id] = breuvages
|
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:
|
else:
|
||||||
# message d'aide
|
# message d'aide
|
||||||
await msg(room,"!biere add <nick>:<citation>",sender)
|
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
|
# liste les quotes
|
||||||
# args.pop(0)
|
args.pop(0)
|
||||||
# salon = verifPMRoom(room,event)
|
salon = await verifPMRoom(room,message)
|
||||||
# if (len(args) == 0):
|
print(salon)
|
||||||
|
if (len(args) == 0):
|
||||||
# Liste les breuvages du salon
|
# Liste les breuvages du salon
|
||||||
# reponse = "Voici les reponses du salon " + room.room_id + "\n"
|
reponse = "Voici les reponses du salon " + room.room_id + "\n"
|
||||||
# if (len(room.aliases) > 0):
|
alias = None
|
||||||
# reponse = reponse + "(alias : " + room.aliases[0] + "\n"
|
if room.name:
|
||||||
# for cle,valeur in breuvages.items():
|
alias = room.name
|
||||||
# reponse = reponse + cle[0] + " / " + str(cle[1]) + " : " + valeur + "\n"
|
elif room.canonical_alias:
|
||||||
# if (len(reponse) > 500):
|
alias = room.canonical_alias
|
||||||
# msg(salon,reponse,event['sender'])
|
elif room.names:
|
||||||
# reponse = ""
|
alias = room.names[0]
|
||||||
# msg(salon,reponse,event['sender'])
|
else:
|
||||||
# elif (args[0] == "all"):
|
alias = ""
|
||||||
# # tous les breuvages de tous les salons
|
reponse = reponse + "(alias : " + alias + ")\n"
|
||||||
# reponse = "Les breuvages de tous les salons : " + "\n"
|
for cle,valeur in breuvages.items():
|
||||||
# msg(salon,reponse,event['sender'])
|
reponse = reponse + cle[0] + " / " + str(cle[1]) + " : " + valeur + "\n"
|
||||||
# for rid,fame in bieres.items():
|
if (len(reponse) > 500):
|
||||||
# reponse = "Voici les reponses du salon " + rid + "\n"
|
await msg(salon,reponse,sender)
|
||||||
# for cle,valeur in fame.items():
|
reponse = ""
|
||||||
# reponse = reponse + cle[0] + " / " + str(cle[1]) + " : " + valeur + "\n"
|
await msg(salon,reponse,sender)
|
||||||
# if (len(reponse) > 500):
|
elif (args[0] == "all"):
|
||||||
# msg(salon,reponse,event['sender'])
|
# tous les breuvages de tous les salons
|
||||||
# reponse = ""
|
reponse = "Les breuvages de tous les salons : " + "\n"
|
||||||
# msg(salon,reponse,event['sender'])
|
await msg(salon,reponse,sender)
|
||||||
# else:
|
for rid,fame in bieres.items():
|
||||||
# # les breuvages du pseudo spécifié
|
reponse = "Voici les reponses du salon " + rid + "\n"
|
||||||
# nick = " ".join(args)
|
for cle,valeur in fame.items():
|
||||||
# reponse = "Voici les reponses du breuvage " + nick + "\n"
|
reponse = reponse + cle[0] + " / " + str(cle[1]) + " : " + valeur + "\n"
|
||||||
# for cle,valeur in breuvages.items():
|
if (len(reponse) > 500):
|
||||||
# if (cle[0] == nick):
|
await msg(salon,reponse,sender)
|
||||||
# reponse = reponse + cle[0] + " / " + str(cle[1]) + " : " + valeur + "\n"
|
reponse = ""
|
||||||
# msg(salon,reponse,event['sender'])
|
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"):
|
elif (len(args) > 1 and args[0] == "del"):
|
||||||
# salon = verifPMRoom(room,event)
|
salon = await verifPMRoom(room,message)
|
||||||
salon = room.room_id
|
|
||||||
lmod = modos[room.room_id]
|
lmod = modos[room.room_id]
|
||||||
if (sender in admins):
|
if (sender in admins):
|
||||||
id = args[1]
|
id = args[1]
|
||||||
|
@ -957,7 +1012,7 @@ async def biere(room,message): # Gestion des boissons
|
||||||
if (len(phrases) > 0 ):
|
if (len(phrases) > 0 ):
|
||||||
await reponses(room,phrases)
|
await reponses(room,phrases)
|
||||||
else:
|
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
|
async def boissons(room,message): # Gestion des alias de boissons
|
||||||
global modules
|
global modules
|
||||||
|
@ -1027,8 +1082,7 @@ async def salon(room,message): # Gestion des listes de salons recommandes
|
||||||
salons[room.room_id] = famous
|
salons[room.room_id] = famous
|
||||||
await msg(room,"Ajout du salon " + ref + " : " + desc,sender)
|
await msg(room,"Ajout du salon " + ref + " : " + desc,sender)
|
||||||
elif (len(args) > 1 and args[0] == "del"):
|
elif (len(args) > 1 and args[0] == "del"):
|
||||||
#salon = verifPMRoom(room,event)
|
salon = await verifPMRoom(room,message)
|
||||||
salon = room.room_id
|
|
||||||
lmod = modos[room.room_id]
|
lmod = modos[room.room_id]
|
||||||
if (sender in admins):
|
if (sender in admins):
|
||||||
id = args[1]
|
id = args[1]
|
||||||
|
@ -1233,6 +1287,7 @@ def main():
|
||||||
|
|
||||||
modules_read()
|
modules_read()
|
||||||
modos_read()
|
modos_read()
|
||||||
|
prive_read()
|
||||||
if ('horloge' in liste_mod):
|
if ('horloge' in liste_mod):
|
||||||
horloge_read()
|
horloge_read()
|
||||||
if ('quote' in liste_mod):
|
if ('quote' in liste_mod):
|
||||||
|
|
Loading…
Reference in a new issue