nemubot/nemubot.py

66 lines
1.5 KiB
Python
Raw Normal View History

2012-04-09 02:19:39 +00:00
#!/usr/bin/python3
# coding=utf-8
import sys
2012-04-09 02:19:39 +00:00
import signal
import os
import re
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
imports = ["birthday", "qd", "events", "youtube", "watchWebsite", "soutenance", "whereis", "alias"]
2012-04-09 02:19:39 +00:00
imports_launch = ["watchWebsite"]
2012-04-16 16:28:43 +00:00
mods = {}
import server, message
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-04-09 02:19:39 +00:00
def onSignal(signum, frame):
print ("\nSIGINT receive, saving states and close")
2012-02-21 11:41:23 +00:00
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
#Save banlist before quit
message.save_module ()
2012-04-09 02:19:39 +00:00
sys.exit (0)
signal.signal(signal.SIGINT, onSignal)
if len(sys.argv) == 3:
basedir = sys.argv[2]
else:
basedir = "./"
2012-04-09 02:19:39 +00:00
dom = parse(sys.argv[1])
config = dom.getElementsByTagName('config')[0]
servers = list ()
message.load_module (basedir + "/datas/")
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
mod.load_module (basedir + "/datas/")
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-04-09 02:19:39 +00:00
servers.append (srv)
for imp in imports_launch:
mod = __import__ (imp)
mod.launch (servers)
print ("Nemubot ready, my PID is %i!" % (os.getpid()))
2012-02-21 11:41:23 +00:00
prompt=""
while prompt != "quit":
prompt=sys.stdin.readlines ()
sys.exit(0)