- exec(command.get("action"))
-
- # otherwise, give an error
- elif command_name:
+ # dereference the relative object path for the requested function
+ action = mudpy
+ action_fname = command.get("action", command.key)
+ for component in action_fname.split("."):
+ try:
+ action = getattr(action, component)
+ ran = True
+ except AttributeError:
+ log('Could not find action function "%s" for command "%s"'
+ % (action_fname, command_name))
+ 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()))
+ mudpy.command.error(actor, input_data)
+
+ # if the command was not run, give an error
+ if not ran: