add load command to IrcAdmin, which (naturally) loads a module and adds it to the autoload list
This commit is contained in:
		
							parent
							
								
									467c72847a
								
							
						
					
					
						commit
						2295f524d4
					
				| @ -77,6 +77,8 @@ class IrcAdmin(Module): | ||||
|             return self.sub_save_config(connection, event, nick, userhost, replypath, what, admin_unlocked) | ||||
|         elif whats[0] == 'nick' and admin_unlocked and len(whats) >= 2: | ||||
|             return self.sub_change_nick(connection, event, nick, userhost, replypath, what, admin_unlocked) | ||||
|         elif whats[0] == 'load' and admin_unlocked and len(whats) >= 2: | ||||
|             return self.sub_load_module(connection, event, nick, userhost, replypath, what, admin_unlocked) | ||||
|         elif whats[0] == 'reload' and admin_unlocked and len(whats) >= 2: | ||||
|             return self.sub_reload_module(connection, event, nick, userhost, replypath, what, admin_unlocked) | ||||
| 
 | ||||
| @ -148,6 +150,35 @@ class IrcAdmin(Module): | ||||
|         replystr = 'changed nickname' | ||||
|         return self.reply(connection, replypath, replystr) | ||||
| 
 | ||||
|     def sub_load_module(self, connection, event, nick, userhost, replypath, what, admin_unlocked): | ||||
|         """ | ||||
|         Load a module (in both the python and dr.botzo sense) if not already loaded. | ||||
|         """ | ||||
| 
 | ||||
|         whats = what.split(' ') | ||||
| 
 | ||||
|         modname = whats[1] | ||||
|         for module in self.modlist: | ||||
|             if modname == module.__class__.__name__: | ||||
|                 return self.reply(connection, replypath, 'Module ' + modname + ' is already loaded.') | ||||
| 
 | ||||
|         # not loaded, let's get to work | ||||
|         try: | ||||
|             modstr = 'modules.'+modname | ||||
|             __import__(modstr) | ||||
|             module = sys.modules[modstr] | ||||
|             botmod = eval('module.' + modname + '(self.config, self.server, self.modlist)') | ||||
|             botmod.register_handlers(self.server) | ||||
| 
 | ||||
|             # might as well add it to the list | ||||
|             modset = set(self.config.get('dr.botzo', 'module_list').split(',')) | ||||
|             modset.add(modname) | ||||
|             self.config.set('dr.botzo', 'module_list', ','.join(modset)) | ||||
| 
 | ||||
|             return self.reply(connection, replypath, 'Module ' + modname + ' loaded.') | ||||
|         except ImportError: | ||||
|             return self.reply(connection, replypath, 'Module ' + modname + ' not found.') | ||||
| 
 | ||||
|     def sub_reload_module(self, connection, event, nick, userhost, replypath, what, admin_unlocked): | ||||
|         """ | ||||
|         Attempt to reload a module, by seeing if it's loaded and, if so, calling its reload() | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user