anchor.diff:  				    :server "irc.cat.pdx.edu"
   				    :port 6697
   				    :connection-security :ssl)))
  -  (let ((auth-file (open "auth.dat")))
  -    (let ((auth-data (read auth-file)))
  -      (irc:join *connection* channel :password (getf auth-data :key)))
  -    (close auth-file))
  -  (irc:add-hook *connection* 'irc:irc-privmsg-message #'message-received-hook)
  +  (if auth-required
  +      (let ((auth-file (open "auth.dat")))
  +	(let ((auth-data (read auth-file)))
  +	  (irc:join *connection* channel :password (getf auth-data :key)))
  +	(close auth-file))
  +      (irc:join *connection* channel))
  +  (irc:add-hook *connection* 'irc:irc-privmsg-message (lambda (m) (update-swank) (message-received-hook m)))
     (irc:read-message-loop *connection*))
  
positive.code:     (format t "The sender of the message is: ~a~%" sender)
      (when (search *nick* head)
        (fn-case (first body) #'string=
  	       ("drop"
  		(part))
  	       ("source"
  		(irc:privmsg *connection* channel "https://github.com/fouric/lispbot"))
  	       ;; this line will cause the bot to reply to whoever said "hello" to it
  	       ("hello"
  		(let ((string-to-send (format nil "Hello, ~A!" sender)))
  		  ;; make the string lowercase so that we don't have to use lowercase ourselves
  		  (irc:privmsg *connection* sender string-to-send)))))))
  
  (random 10000)
  
  (let ((random-state (make-random-state t)))
    (random 100000 random-state))
  
  (defun run (&optional (channel "#lisp") bot-nick)
    (setf *nick* (or bot-nick (format nil "lispbot~A"
  				    (let ((random-state (make-random-state t)))
  				      (random 10000 random-state)))))
  
negative.code:     (irc:quit *connection*)
      (setf *connection* nil)))
  
  (defparameter *gonna-quit* nil)
  
  ;; a "hook" is some sort of function that we run in response to an event
  ;; this one happens to take one parameter that is filled in with a message by cl-irc
  (defun message-received-hook (message)
  