anchor.diff:  (defreply remove-command ((bot (proto 'command-bot)) name)
     (remhash name (commands bot)))
   
  +(defreply find-command ((bot (proto 'command-bot)) name)
  +  (with-properties (commands) bot
  +    (gethash (string-upcase name) commands)))
  +
   (defreply command-function ((bot (proto 'command-bot)) name)
  -  (with-properties (commands) bot
  -    (or (let ((cmd (gethash name commands)))
  -	  (when cmd (cmd-function cmd)))
  -	(lambda (bot args sender channel)
  -	  (declare (ignore bot args sender channel))
  -	  (error (build-string "I don't know how to ~A"
  -			       name))))))
  +  (or (let ((cmd (find-command bot name)))
  +	(when cmd (cmd-function cmd)))
  +      (lambda (bot args sender channel)
  +	(declare (ignore bot args sender channel))
  +	(error (build-string "I don't know how to ~A"
  +			     name)))))
   
   (defreply erase-all-commands ((bot (proto 'command-bot)))
     (clrhash (commands bot)))
  
positive.code: ;;; base commands
  (defcommand echo ("(.*)" string)
    string)
  (defcommand source ()
    "I'm licensed under the AGPL, you can find my source code at: http://github.com/zkat/sykobot")
  (defcommand version ()
  
negative.code: ;;; Command handling stuff
  (defmessage add-command (bot name command))
  (defmessage remove-command (bot command))
  (defmessage find-command (bot name))
  (defmessage command-function (bot command))
  (defmessage erase-all-commands (bot))
  (defmessage list-all-commands (bot))
  