nemubot/nemubot.py

74 lines
1.7 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
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
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)
imports = ["birthday", "qd", "events", "youtube", "watchWebsite", "soutenance", "whereis", "alias"]
imports_launch = ["watchWebsite", "events"]
mods = {}
2012-02-21 11:41:23 +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
for imp in imports_launch:
mods[imp].stop ()
#Save banlist before quit
message.save_module ()
2012-04-09 02:19:39 +00:00
sys.exit (0)
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)
#Define working directory
if len(sys.argv) == 3:
basedir = sys.argv[2]
else:
basedir = "./"
2012-04-09 02:19:39 +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]
servers = dict ()
2012-04-09 02:19:39 +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/")
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
prompt = __import__ ("prompt")
while prompt.launch(servers):
imp.reload(prompt)
onClose()