generated from Nemesis/Exemple
mails
This commit is contained in:
parent
21d730e926
commit
fce865ee3d
2 changed files with 114 additions and 4 deletions
|
@ -7,3 +7,9 @@ admin = ""
|
||||||
[MOD]
|
[MOD]
|
||||||
# liste = roll,quote,biere,stats,liste,horloge,carte,card,cristal,welcome,salut,jdr,gens,va,salon,kick
|
# liste = roll,quote,biere,stats,liste,horloge,carte,card,cristal,welcome,salut,jdr,gens,va,salon,kick
|
||||||
liste = roll,quote,biere,stats,liste,horloge,carte,card,cristal,welcome,salut,jdr,gens,va,salon,kick
|
liste = roll,quote,biere,stats,liste,horloge,carte,card,cristal,welcome,salut,jdr,gens,va,salon,kick
|
||||||
|
|
||||||
|
[MAIL]
|
||||||
|
msender = "user@domain.tld"
|
||||||
|
mpass = "password"
|
||||||
|
msmtp = "smtp"
|
||||||
|
mport = "port"
|
||||||
|
|
106
asmodee.py
106
asmodee.py
|
@ -11,6 +11,7 @@ import time
|
||||||
import threading
|
import threading
|
||||||
import json
|
import json
|
||||||
from datetime import datetime,timedelta
|
from datetime import datetime,timedelta
|
||||||
|
import smtplib
|
||||||
|
|
||||||
from matrix_bot_api.matrix_bot_api import MatrixBotAPI
|
from matrix_bot_api.matrix_bot_api import MatrixBotAPI
|
||||||
from matrix_bot_api.mregex_handler import MRegexHandler
|
from matrix_bot_api.mregex_handler import MRegexHandler
|
||||||
|
@ -42,9 +43,15 @@ welcome = {} # Messages d'accueil des salons
|
||||||
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
|
||||||
|
mails = {} # Liste de gens abonnés par mail au salon
|
||||||
liste_mod = [] # Modules disponibles
|
liste_mod = [] # Modules disponibles
|
||||||
USERNAME = ""
|
USERNAME = ""
|
||||||
|
|
||||||
|
msender = ""
|
||||||
|
mpass = ""
|
||||||
|
msmtp = ""
|
||||||
|
mport = ""
|
||||||
|
|
||||||
# Chargement des données persistantes
|
# Chargement des données persistantes
|
||||||
def horloge_read():
|
def horloge_read():
|
||||||
global clock
|
global clock
|
||||||
|
@ -128,6 +135,16 @@ def modules_read():
|
||||||
except:
|
except:
|
||||||
modules = {}
|
modules = {}
|
||||||
|
|
||||||
|
def mails_read():
|
||||||
|
global mails
|
||||||
|
try:
|
||||||
|
with open("mails", "rb") as fichier:
|
||||||
|
loader = pickle.Unpickler(fichier)
|
||||||
|
mails = loader.load()
|
||||||
|
except:
|
||||||
|
mails = {}
|
||||||
|
|
||||||
|
|
||||||
def save_obj():
|
def save_obj():
|
||||||
if ('horloge' in liste_mod):
|
if ('horloge' in liste_mod):
|
||||||
with open("horloge", "wb") as fichier:
|
with open("horloge", "wb") as fichier:
|
||||||
|
@ -156,6 +173,10 @@ def save_obj():
|
||||||
with open("welcome", "wb") as fichier:
|
with open("welcome", "wb") as fichier:
|
||||||
saver = pickle.Pickler(fichier)
|
saver = pickle.Pickler(fichier)
|
||||||
saver.dump(welcome)
|
saver.dump(welcome)
|
||||||
|
if ('mails' in liste_mod):
|
||||||
|
with open("mails", "wb") as fichier:
|
||||||
|
saver = pickle.Pickler(fichier)
|
||||||
|
saver.dump(mails)
|
||||||
with open("moderateurs", "wb") as fichier:
|
with open("moderateurs", "wb") as fichier:
|
||||||
saver = pickle.Pickler(fichier)
|
saver = pickle.Pickler(fichier)
|
||||||
saver.dump(modos)
|
saver.dump(modos)
|
||||||
|
@ -435,6 +456,8 @@ def help_center(room,event,name,private): # Aide sur les commandes disponibles
|
||||||
msg(salon,"- !accueil <message> : Modifie le message d'accueil avec message. Il sera affiché à tout nouvel arrivant précédé de la mention 'Bienvenue sur le salon XXX, YYY.'")
|
msg(salon,"- !accueil <message> : Modifie le message d'accueil avec message. Il sera affiché à tout nouvel arrivant précédé de la mention 'Bienvenue sur le salon XXX, YYY.'")
|
||||||
elif (re.search("kick", args[0])):
|
elif (re.search("kick", args[0])):
|
||||||
msg(salon,"- !kick <@mxid> [@mxid] ... : kick les users listés")
|
msg(salon,"- !kick <@mxid> [@mxid] ... : kick les users listés")
|
||||||
|
elif (re.search("mails", args[0])):
|
||||||
|
msg(salon,"- !mail add <email> : s'abonner aux messages du salon par mail.\n -!mail del <email> : se désabonner aux messages du salon par mail.")
|
||||||
elif (re.search("modo", args[0])):
|
elif (re.search("modo", args[0])):
|
||||||
msg(salon,"- !modo : Affiche la liste des modérateurs (ils peuvent gérer le message d'accueil, supprimer des citations ou des boissons, ajouter/retirer des modules, ajouter/retirer des modérateurs)\n- !modo add <mxid> : Ajoute une personne comme modérateur du salon\n- !modo del <mxid> : Retire une personne des modérateurs.")
|
msg(salon,"- !modo : Affiche la liste des modérateurs (ils peuvent gérer le message d'accueil, supprimer des citations ou des boissons, ajouter/retirer des modules, ajouter/retirer des modérateurs)\n- !modo add <mxid> : Ajoute une personne comme modérateur du salon\n- !modo del <mxid> : Retire une personne des modérateurs.")
|
||||||
elif (re.search("module", args[0])):
|
elif (re.search("module", args[0])):
|
||||||
|
@ -467,6 +490,8 @@ def help_center(room,event,name,private): # Aide sur les commandes disponibles
|
||||||
message += "\n- !accueil <message> : Modifie le message d'accueil"
|
message += "\n- !accueil <message> : Modifie le message d'accueil"
|
||||||
if (cle[0] == rid and cle[1] == "kick" and valeur):
|
if (cle[0] == rid and cle[1] == "kick" and valeur):
|
||||||
message += "\n- !kick <@mxid> [@mxid] ... : kick les users listés"
|
message += "\n- !kick <@mxid> [@mxid] ... : kick les users listés"
|
||||||
|
if (cle[0] == rid and cle[1] == "mails" and valeur):
|
||||||
|
message += "\n- !mail add <email> : s'abonner aux messages du salon par mail.\n -!mail del <email> : se désabonner aux messages du salon par mail."
|
||||||
if (cle[0] == rid and cle[1] == "roll" and valeur):
|
if (cle[0] == rid and cle[1] == "roll" and valeur):
|
||||||
message += "\n- :roll <options> <des>\n- :sw <options> <des>\n- :dom <options> <des>\n- :wod <options> <des>\n- :owod <options> <des>\n- :ars <options> <des>\n- :des <options> <des>\n- :star <options> <des>"
|
message += "\n- :roll <options> <des>\n- :sw <options> <des>\n- :dom <options> <des>\n- :wod <options> <des>\n- :owod <options> <des>\n- :ars <options> <des>\n- :des <options> <des>\n- :star <options> <des>"
|
||||||
message += "\n- !modo : Gère les modérateurs du salon\n- !module : Gère les modules actifs sur le salon\n\n- Pour plus de details, tapez !" + name + " <commande>\n\nRetrouvez Asmodee sur https://git.ombreport.info/nemesis/asmodee_matrix"
|
message += "\n- !modo : Gère les modérateurs du salon\n- !module : Gère les modules actifs sur le salon\n\n- Pour plus de details, tapez !" + name + " <commande>\n\nRetrouvez Asmodee sur https://git.ombreport.info/nemesis/asmodee_matrix"
|
||||||
|
@ -1770,6 +1795,68 @@ def bienvenue(event): # Affichage d'un message d'accueil aux nouveaux venus
|
||||||
if (membership == "join" and prev_member != "join"):
|
if (membership == "join" and prev_member != "join"):
|
||||||
msg(room,"Bienvenue sur " + alias + ", " + nick + ". " + reponse)
|
msg(room,"Bienvenue sur " + alias + ", " + nick + ". " + reponse)
|
||||||
|
|
||||||
|
@not_myself
|
||||||
|
def mails(room,event): # Abonnements mail aux messages
|
||||||
|
global modules
|
||||||
|
global modos
|
||||||
|
try:
|
||||||
|
rmod = modules[room.room_id, 'mails']
|
||||||
|
except:
|
||||||
|
modules[room.room_id, 'mails'] = False
|
||||||
|
if (modules[room.room_id, 'mails']):
|
||||||
|
lmails = []
|
||||||
|
try:
|
||||||
|
lmails = mails[room.room_id]
|
||||||
|
except:
|
||||||
|
lmails = []
|
||||||
|
if (event['sender'] in admins or event['sender'] in lmod or event['sender'] == bot.client.user_id):
|
||||||
|
args = event['content']['body'].split()
|
||||||
|
args.pop(0)
|
||||||
|
if (len(args) > 1 and args[0] == "add"):
|
||||||
|
args.pop(0)
|
||||||
|
mail = args[0]
|
||||||
|
if (not mail in lmails):
|
||||||
|
lmails.append(mail)
|
||||||
|
mails[room.room_id] = lmails
|
||||||
|
msg(room,mail + " recevra des mails.")
|
||||||
|
else:
|
||||||
|
msg(room,mail + " reçoit déjà des mails.")
|
||||||
|
elif (len(args) > 1 and args[0] == "del"):
|
||||||
|
args.pop(0)
|
||||||
|
mail = args[0]
|
||||||
|
if (mail in lmails):
|
||||||
|
place = lmails.index(mail)
|
||||||
|
del lmails[place]
|
||||||
|
mails[room.room_id] = lmails
|
||||||
|
msg(room,mail + " ne recevra plus de mails.")
|
||||||
|
else:
|
||||||
|
msg(room,mail + " ne reçoit pas de mails.")
|
||||||
|
else:
|
||||||
|
msg(room,"\n".join(lmails))
|
||||||
|
else:
|
||||||
|
msg(salon,"Vous n'êtes pas autorisés à définir les réceptions de mails pour ce salon.")
|
||||||
|
|
||||||
|
@not_myself
|
||||||
|
def envoi_mail(room,event): # envoi des messages aux abonnés par mail
|
||||||
|
global modules
|
||||||
|
try:
|
||||||
|
rmod = modules[room.room_id, 'mails']
|
||||||
|
except:
|
||||||
|
modules[room.room_id, 'mails'] = False
|
||||||
|
if (modules[room.room_id, 'mails']):
|
||||||
|
lmails = []
|
||||||
|
try:
|
||||||
|
lmails = mails[room.room_id]
|
||||||
|
except:
|
||||||
|
lmails = []
|
||||||
|
for mail in lmails:
|
||||||
|
serveur = smtplib.SMTP(msmtp, mport)
|
||||||
|
serveur.starttls()
|
||||||
|
serveur.login(msender, mpass)
|
||||||
|
message = event['sender'] + " : " + event['content']['body']
|
||||||
|
serveur.sendmail(msender, mail, message)
|
||||||
|
serveur.quit()
|
||||||
|
|
||||||
@not_myself
|
@not_myself
|
||||||
def modo(room,event): # Definition d'un moderateur
|
def modo(room,event): # Definition d'un moderateur
|
||||||
global modos
|
global modos
|
||||||
|
@ -1909,7 +1996,7 @@ def main():
|
||||||
USERNAME = "" # Bot's username
|
USERNAME = "" # Bot's username
|
||||||
PASSWORD = "" # Bot's password
|
PASSWORD = "" # Bot's password
|
||||||
SERVER = "" # Matrix server URL
|
SERVER = "" # Matrix server URL
|
||||||
mods = ["roll", "quote", "biere", "stats", "liste", "horloge", "carte", "card", "cristal", "welcome", "salut", "jdr", "gens", "va", "salon", "kick"]
|
mods = ["roll", "quote", "biere", "stats", "liste", "horloge", "carte", "card", "cristal", "welcome", "salut", "jdr", "gens", "va", "salon", "kick", "mails"]
|
||||||
global admins
|
global admins
|
||||||
if ('AUTH' in config):
|
if ('AUTH' in config):
|
||||||
USERNAME = config['AUTH']['username'] # Bot's username
|
USERNAME = config['AUTH']['username'] # Bot's username
|
||||||
|
@ -1928,6 +2015,18 @@ def main():
|
||||||
else:
|
else:
|
||||||
liste_mod = mods
|
liste_mod = mods
|
||||||
|
|
||||||
|
if ('MAIL' in config):
|
||||||
|
try:
|
||||||
|
msender = config['MAIL']['msender']
|
||||||
|
mpass = config['MAIL']['mpass']
|
||||||
|
msmtp = config['MAIL']['msmtp']
|
||||||
|
mport = config['MAIL']['mport']
|
||||||
|
except:
|
||||||
|
msender = ""
|
||||||
|
mpass = ""
|
||||||
|
msmtp = ""
|
||||||
|
mport = ""
|
||||||
|
|
||||||
# Create an instance of the MatrixBotAPI
|
# Create an instance of the MatrixBotAPI
|
||||||
global bot
|
global bot
|
||||||
bot = MatrixBotAPI(USERNAME, PASSWORD, SERVER)
|
bot = MatrixBotAPI(USERNAME, PASSWORD, SERVER)
|
||||||
|
@ -2034,6 +2133,11 @@ def main():
|
||||||
kick_handler = MCommandHandler("kick", kick)
|
kick_handler = MCommandHandler("kick", kick)
|
||||||
bot.add_handler(kick_handler)
|
bot.add_handler(kick_handler)
|
||||||
|
|
||||||
|
# Mails
|
||||||
|
if ('mails' in liste_mod):
|
||||||
|
mails_handler = MCommandHandler("mails", mails)
|
||||||
|
bot.add_handler(mails_handler)
|
||||||
|
|
||||||
# Definition des moderateurs
|
# Definition des moderateurs
|
||||||
modos_read()
|
modos_read()
|
||||||
modos_handler = MCommandHandler("modo", modo)
|
modos_handler = MCommandHandler("modo", modo)
|
||||||
|
|
Loading…
Reference in a new issue