File tree Expand file tree Collapse file tree 2 files changed +16
-6
lines changed Expand file tree Collapse file tree 2 files changed +16
-6
lines changed Original file line number Diff line number Diff line change @@ -402,6 +402,20 @@ def _unload_module(self, loaded_module: LoadedModule):
402
402
[loaded_module .name ,
403
403
", " .join ([str (referrer ) for referrer in referrers ])])
404
404
405
+ def try_reload_module (self , bot : "IRCBot.Bot" , name : str ):
406
+ loaded_module = self .modules .pop (name )
407
+ loaded_module .module .on_pause ()
408
+
409
+ new_definition = self .find_module (name )
410
+ try :
411
+ self .load_module (bot , new_definition )
412
+ except :
413
+ loaded_module .module .on_resume ()
414
+ self .modules [definition .name ] = loaded_module
415
+ raise
416
+
417
+ self ._unload_module (loaded_module )
418
+
405
419
def try_reload_modules (self , bot : "IRCBot.Bot" ,
406
420
whitelist : typing .List [str ], blacklist : typing .List [str ]):
407
421
loadable , nonloadable = self ._list_valid_modules (
Original file line number Diff line number Diff line change @@ -68,18 +68,14 @@ def unload(self, event):
68
68
self ._catch (name , lambda : self .bot .modules .unload_module (name ))
69
69
event ["stdout" ].write ("Unloaded '%s'" % name )
70
70
71
- def _reload (self , name ):
72
- self .bot .modules .unload_module (name )
73
- definition = self ._catch (name ,
74
- lambda : self .bot .modules .find_module (name ))
75
- self .bot .modules .load_module (self .bot , definition )
76
71
@utils .hook ("received.command.reloadmodule" )
77
72
@utils .kwarg ("help" , "Reload a module" )
78
73
@utils .kwarg ("permission" , "reloadmodule" )
79
74
@utils .spec ("!<name>wordlower" )
80
75
def reload (self , event ):
81
76
name = event ["spec" ][0 ]
82
- self ._catch (name , lambda : self ._reload (name ))
77
+ self ._catch (name ,
78
+ lambda : self .bot .modules .try_reload_module (self .bot , name ))
83
79
event ["stdout" ].write ("Reloaded '%s'" % name )
84
80
85
81
@utils .hook ("received.command.reloadallmodules" )
You can’t perform that action at this time.
0 commit comments