1
0
Fork 0
nemubot/nemubot.py

69 lines
1.6 KiB
Python
Executable File

#!/usr/bin/python3
# coding=utf-8
import sys
import signal
import os
import re
from datetime import date
from datetime import datetime
from datetime import timedelta
from xml.dom.minidom import parse
imports = ["birthday", "qd", "events", "youtube", "watchWebsite", "soutenance", "whereis", "alias"]
imports_launch = ["watchWebsite", "events"]
mods = {}
import server, message
if len(sys.argv) != 2 and len(sys.argv) != 3:
print ("This script takes exactly 1 arg: a XML config file")
sys.exit(1)
def onSignal(signum, frame):
print ("\nSIGINT receive, saving states and close")
for imp in mods.keys():
mods[imp].save_module ()
for imp in imports_launch:
mods[imp].stop ()
#Save banlist before quit
message.save_module ()
sys.exit (0)
signal.signal(signal.SIGINT, onSignal)
if len(sys.argv) == 3:
basedir = sys.argv[2]
else:
basedir = "./"
dom = parse(sys.argv[1])
config = dom.getElementsByTagName('config')[0]
servers = dict ()
message.load_module (basedir + "/datas/")
for imp in imports:
mod = __import__ (imp)
mods[imp] = mod
mod.load_module (basedir + "/datas/")
for serveur in config.getElementsByTagName('server'):
srv = server.Server(serveur, config.getAttribute('nick'), config.getAttribute('owner'), config.getAttribute('realname'))
srv.launch(mods, basedir + "/datas/")
servers[srv.id] = srv
for imp in imports_launch:
mod = __import__ (imp)
mod.launch (servers)
print ("Nemubot ready, my PID is %i!" % (os.getpid()))
prompt=""
while prompt != "quit":
prompt=sys.stdin.readlines ()
sys.exit(0)