- exec(command.get("action"))
-
- # otherwise, give an error
- elif command_name:
+ # dereference the relative object path for the requested function
+ action = mudpy
+ for component in command.get("action").split("."):
+ try:
+ action = getattr(action, component)
+ ran = True
+ except AttributeError:
+ log('Could not find action function for command "%s"')
+ action = None
+ break
+ if action:
+ try:
+ action(actor, parameters)
+ except Exception:
+ log('Command string "%s" from user %s raised an '
+ 'exception...\n%s' % (
+ input_data, actor.owner.account.get("name"),
+ traceback.format_exc()))
+
+ # if the command was not run, give an error
+ if not ran: