anchor.diff:  (defreply list-all-commands ((bot (proto 'command-bot)))
     (with-properties (commands) bot
       (hash-table-keys commands)))
  -
  -;; We declare these variables here, but do not bind them unless we're actually inside
  -;; the body of a command.
  -(defvar *bot*)
  -(defvar *message*)
  -(defvar *sender*)
  -(defvar *channel*)
   
   ;; A very convenient macro...
   (defmacro defcommand (name (&optional (regex "") &rest vars) &body body)
  
positive.code:     `(add-command (proto 'command-bot) (symbol-name ',name)
  		  (defclone ((proto 'command))
  		      ((cmd-function
                          (lambda (*bot* *message* *sender* *channel*)
                            (declare (ignorable *message* *bot* *sender* *channel*))
                            ,@(if vars
                                  `((or (register-groups-bind ,vars (,regex *message*)
                                          ,@real-body)
  
negative.code: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (in-package :sykobot)
  
  ;;; Modularization of commands
  (defproto command-bot ((proto 'listener-bot))
    ((commands (make-hash-table :test #'equal))
  