Always pass parameters in commands
[mudpy.git] / mudpy / command.py
index ebd9036..a26906b 100644 (file)
@@ -11,7 +11,7 @@ import unicodedata
 import mudpy
 
 
-def chat(actor):
+def chat(actor, parameters):
     """Toggle chat mode."""
     mode = actor.get("mode")
     if not mode:
@@ -148,10 +148,7 @@ def help(actor, parameters):
     if parameters and actor.owner:
 
         # is the command word one for which we have data?
-        if parameters in actor.universe.groups["command"]:
-            command = actor.universe.groups["command"][parameters]
-        else:
-            command = None
+        command = mudpy.misc.find_command(parameters)
 
         # only for allowed commands
         if actor.can_run(command):
@@ -164,7 +161,8 @@ def help(actor, parameters):
                 output = "$(red)"
             else:
                 output = "$(grn)"
-            output += parameters + "$(nrm) - " + description + "$(eol)$(eol)"
+            output = "%s%s$(nrm) - %s$(eol)$(eol)" % (
+                output, command.subkey, description)
 
             # add the help text if provided
             help_text = command.get("help")
@@ -237,6 +235,10 @@ def move(actor, parameters):
 
 def preferences(actor, parameters):
     """List, view and change actor preferences."""
+
+    # Escape replacement macros in preferences
+    parameters = mudpy.misc.escape_macros(parameters)
+
     message = ""
     arguments = parameters.split()
     allowed_prefs = set()
@@ -269,14 +271,14 @@ def preferences(actor, parameters):
     actor.send(message)
 
 
-def quit(actor):
+def quit(actor, parameters):
     """Leave the world and go back to the main menu."""
     if actor.owner:
         actor.owner.state = "main_utility"
         actor.owner.deactivate_avatar()
 
 
-def reload(actor):
+def reload(actor, parameters):
     """Reload all code modules, configs and data."""
     if actor.owner: