anchor.diff:  ;;; base commands
   (defcommand echo ("(.*)" string)
     string)
  +(defcommand documentation ("(\\S+)" cmd-name)
  +  (let ((cmd (find-command *active-bot* cmd-name)))
  +    (if cmd 
  +	(dox cmd)
  +	(build-string "I don't know any command called ~A" cmd-name))))
   (defcommand source ()
     "I'm licensed under the AGPL, you can find my source code at: http://github.com/zkat/sykobot")
   (defcommand version ()
  
positive.code: (defreply remove-command ((bot (proto 'command-bot)) name)
    (remhash name (commands bot)))
  
  (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))))))
  
  (defreply erase-all-commands ((bot (proto 'command-bot)))
    (clrhash (commands bot)))
  
negative.code: 
  (defproto command ()
    ((cmd-function )
     (dox "No documentation available.")))
  
  ;;; Detection regex handling
  (defmessage update-detection-regex (bot))
  