anchor.diff:  ;;; 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))
  
positive.code: 
  (defproto command ()
    ((cmd-function )
     (dox "")))
  
  ;;; Detection regex handling
  (defmessage update-detection-regex (bot))
  
negative.code: (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)
    (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)))
  