]> jfr.im git - erebus.git/commitdiff
fix crashbug in !modreload / ctlmod.reloadmod
authorzonidjan <redacted>
Sun, 6 Sep 2015 01:47:52 +0000 (20:47 -0500)
committerzonidjan <redacted>
Sun, 6 Sep 2015 01:47:52 +0000 (20:47 -0500)
previously a typo or etc could've crashed the bot
(due to ImportError; not finding the requested module)

ctlmod.py
modlib.py
modules/module.py

index 9a30c7e2c0f54c54f7ae2110bba9eb1a3bc3b5a9..73ae1fcd015d228180dc7ad8de64dc7a21f6072d 100644 (file)
--- a/ctlmod.py
+++ b/ctlmod.py
@@ -59,13 +59,17 @@ def reloadmod(parent, modname):
                if modhas(modname, 'modrestart'): modules[modname].modrestart(parent)
                else: modules[modname].modstop(parent)
 
-               reload(modules[modname])
+               try:
+                       return reload(modules[modname])
+               except BaseException, e:
+                       return modlib.error(e)
 
                if modhas(modname, 'modrestarted'): modules[modname].modrestarted(parent)
                else: modules[modname].modstart(parent)
 
        else:
-               load(parent, modname)
+               return load(parent, modname)
+
 
 def loadall(parent, modlist):
        for m in modlist: load(parent, m)
index 5fb7e77704866e97751848400d015cde5cb0a4d8..02b657e6859b11266e8a06130de708ce60d2cd18 100644 (file)
--- a/modlib.py
+++ b/modlib.py
@@ -10,7 +10,7 @@ class error(object):
        def __repr__(self):
                return '<modlib.error %r>' % self.errormsg
        def __str__(self):
-               return self.errormsg
+               return str(self.errormsg)
 
 class modlib(object):
        # default (global) access levels
index 33be1ffedcddc49e239011e3f7dcb9e25075f943..bcccaa210bb58bc5deb85a26b4588fb239bf2260 100644 (file)
@@ -41,7 +41,10 @@ def cmd_modunload(bot, user, chan, realtarget, *args):
 @lib.argsEQ(1)
 def cmd_modreload(bot, user, chan, realtarget, *args):
        okay = ctlmod.reloadmod(bot.parent, args[0])
-       bot.msg(user, "Reloaded %s" % (args[0]))
+       if okay:
+               bot.msg(user, "Reloaded %s" % (args[0]))
+       else:
+               bot.msg(user, "Error occurred: %r" % (okay))
 
 @lib.hook('modlist', needchan=False, glevel=lib.STAFF)
 @lib.argsEQ(0)