anchor.diff:  
   ;; A very convenient macro...
   (defmacro defcommand (name (&optional (regex "") &rest vars) &body body)
  -  `(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
  -			      `((register-groups-bind ,vars (,regex *message*)
  -				  ,@body))
  -			      `(,@body))))))))
  +  (let ((documentation nil)
  +	(real-body nil))
  +    (if (and (stringp (car body))
  +	     (cdr body))
  +	(progn
  +	  (setf documentation (car body))
  +	  (setf real-body (cdr body)))
  +	(setf real-body body))
  +    `(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
  +				`((register-groups-bind ,vars (,regex *message*)
  +				    ,@real-body))
  +				`(,@real-body))))
  +		       ,@(when documentation
  +			       `((dox ,documentation))))))))
  +
   
   ;;; Command processing
   
  
positive.code: 
  ;;; AUR 
  (defcommand aursearch ("(.*)" query)
    (multiple-value-bind (title url)
        (aur-search query)
      (build-string "~:[~;~A ~]<~A>" title title url)))
  
negative.code: 
  ;;; kiloseconds
  (defcommand kiloseconds ("(.*)" zone)
    "Syntax: 'kiloseconds [<zone>]' - The current time in kiloseconds. Optionally, a time zone~
  can be provided in the format [+-]NUM. Example: 'kiloseconds -5'."
    (when (zerop (length zone)) (setf zone "0"))
    (let ((parsed-zone (parse-integer zone :junk-allowed t)))
      (if parsed-zone
  