2012-04-09 02:19:39 +00:00
|
|
|
#!/usr/bin/python3
|
2011-12-31 10:14:19 +00:00
|
|
|
# coding=utf-8
|
|
|
|
|
|
|
|
import sys
|
2012-04-09 02:19:39 +00:00
|
|
|
import signal
|
2011-12-31 10:14:19 +00:00
|
|
|
import os
|
|
|
|
import re
|
2012-05-21 10:21:14 +00:00
|
|
|
import imp
|
2012-01-29 14:28:02 +00:00
|
|
|
from datetime import date
|
|
|
|
from datetime import datetime
|
|
|
|
from datetime import timedelta
|
2012-02-21 11:41:23 +00:00
|
|
|
from xml.dom.minidom import parse
|
2011-12-31 10:14:19 +00:00
|
|
|
|
2012-04-09 07:43:18 +00:00
|
|
|
if len(sys.argv) != 2 and len(sys.argv) != 3:
|
2012-04-09 02:19:39 +00:00
|
|
|
print ("This script takes exactly 1 arg: a XML config file")
|
2012-02-21 11:41:23 +00:00
|
|
|
sys.exit(1)
|
|
|
|
|
2012-05-21 10:21:14 +00:00
|
|
|
imports = ["birthday", "qd", "events", "youtube", "watchWebsite", "soutenance", "whereis", "alias"]
|
|
|
|
imports_launch = ["watchWebsite", "events"]
|
|
|
|
mods = {}
|
2012-02-21 11:41:23 +00:00
|
|
|
|
2012-05-21 10:21:14 +00:00
|
|
|
def onClose():
|
|
|
|
"""Call when the bot quit; saving all modules"""
|
2012-04-16 16:28:43 +00:00
|
|
|
for imp in mods.keys():
|
|
|
|
mods[imp].save_module ()
|
2012-04-09 02:19:39 +00:00
|
|
|
|
2012-05-14 15:50:11 +00:00
|
|
|
for imp in imports_launch:
|
|
|
|
mods[imp].stop ()
|
|
|
|
|
2012-04-30 16:22:10 +00:00
|
|
|
#Save banlist before quit
|
|
|
|
message.save_module ()
|
|
|
|
|
2012-04-09 02:19:39 +00:00
|
|
|
sys.exit (0)
|
2012-05-21 10:21:14 +00:00
|
|
|
|
|
|
|
def onSignal(signum, frame):
|
|
|
|
print ("\nSIGINT receive, saving states and close")
|
|
|
|
onClose()
|
2012-04-09 02:19:39 +00:00
|
|
|
signal.signal(signal.SIGINT, onSignal)
|
|
|
|
|
2012-05-21 10:21:14 +00:00
|
|
|
#Define working directory
|
2012-04-09 07:43:18 +00:00
|
|
|
if len(sys.argv) == 3:
|
|
|
|
basedir = sys.argv[2]
|
|
|
|
else:
|
|
|
|
basedir = "./"
|
2012-04-09 02:19:39 +00:00
|
|
|
|
2012-05-21 10:21:14 +00:00
|
|
|
#Load base modules
|
|
|
|
server = __import__ ("server")
|
|
|
|
message = __import__ ("message")
|
|
|
|
message.load (basedir + "/datas/")
|
|
|
|
|
|
|
|
#Read configuration XML file
|
2012-04-09 02:19:39 +00:00
|
|
|
dom = parse(sys.argv[1])
|
|
|
|
config = dom.getElementsByTagName('config')[0]
|
2012-05-14 15:50:11 +00:00
|
|
|
servers = dict ()
|
2012-04-09 02:19:39 +00:00
|
|
|
|
2012-05-21 10:21:14 +00:00
|
|
|
#Load modules
|
2012-04-09 02:19:39 +00:00
|
|
|
for imp in imports:
|
|
|
|
mod = __import__ (imp)
|
2012-04-16 16:28:43 +00:00
|
|
|
mods[imp] = mod
|
2012-04-09 02:19:39 +00:00
|
|
|
|
|
|
|
for serveur in config.getElementsByTagName('server'):
|
|
|
|
srv = server.Server(serveur, config.getAttribute('nick'), config.getAttribute('owner'), config.getAttribute('realname'))
|
2012-04-16 16:28:43 +00:00
|
|
|
srv.launch(mods, basedir + "/datas/")
|
2012-05-14 15:50:11 +00:00
|
|
|
servers[srv.id] = srv
|
2012-04-09 02:19:39 +00:00
|
|
|
|
|
|
|
|
|
|
|
print ("Nemubot ready, my PID is %i!" % (os.getpid()))
|
2012-02-21 11:41:23 +00:00
|
|
|
|
2012-05-21 10:21:14 +00:00
|
|
|
prompt = __import__ ("prompt")
|
|
|
|
while prompt.launch(servers):
|
|
|
|
imp.reload(prompt)
|
|
|
|
|
|
|
|
onClose()
|