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 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…
Reference in a new issue