anchor.diff:      (apply #'jsown:parse data keywords)))
   
   (defun load-emotes ()
  +  (v:info :twitch "Loading emotes.")
     ;; We load this file instead as it is more lightweight for what we want.
     (let ((raw (json-request "https://twitchemotes.com/api_cache/v2/images.json" "images")))
       (setf *emotes* (mapcar (lambda (obj) (cdr (assoc "code" (cddr obj) :test #'string=)))
  
positive.code: 
  (define-twitch-command color (color) ()
    (send ".color ~a" color)
    (respond event "Color changed to ~a." color))
  
  (define-twitch-command ignore (user) ()
    (send ".ignore ~a" user)
    (respond event "User ~s ignored." user))
  
  (define-twitch-command unignore (user) ()
    (send ".unignore ~a" user)
    (respond event "User ~s unignored." user))
  
  (define-twitch-command me (text) ()
    (send ".me ~a" text))
  
  (define-twitch-command timeout (user &optional time) ()
    (send ".timeout ~a~@[ ~a~]" user time)
    (respond event "User ~s has been timed out~@[ for ~a seconds~]." user time))
  
  (define-twitch-command ban (user) ()
    (send ".ban ~a" user)
    (respond event "User ~s has been banned." user))
  
  (define-twitch-command unban (user) ()
    (send ".unban ~a" user)
    (respond event "User ~s has been unbanned." user))
  
  (define-twitch-command slow (&optional seconds) ()
    (cond (seconds
           (send ".slow ~a" seconds)
           (respond event "Slow mode has been activated~@[ and set to ~a seconds~]." seconds))
          (T
           (send ".slowoff")
           (respond event "Slow mode has been deactivated."))))
  
  (define-twitch-command subscribers-only (&optional (on "on")) ()
    (cond ((string-equal on "on")
           (send ".subscribers")
           (respond event "Subscribers-only mode has been activated."))
          (T
           (send ".subscribersoff")
           (respond event "Subscribers-only mode has been deactivated."))))
  
  (define-twitch-command emote-only (&optional (on "on")) ()
    (cond ((string-equal on "on")
           (send ".emoteonly")
           (respond event "Emote-only mode has been activated."))
          (T
           (send ".emoteoff")
           (respond event "Emote-only mode has been deactivated."))))
  
  (define-twitch-command clear () ()
    (send ".clear")
    (respond event "Channel cleared."))
  
  (define-twitch-command r9k (&optional (on "on")) ()
    (cond ((string-equal on "on")
           (send ".r9kbeta")
           (respond event "R9K mode has been activated."))
          (T
           (send ".r9kbetaoff")
           (respond event "R9K mode has been deactivated."))))
  
  (define-twitch-command commercial (&optional seconds) ()
    (send ".commercial~@[ ~a~]" seconds)
    (respond event "Running a commercial~@[ for ~a seconds~]." seconds))
  
  (define-twitch-command host (&optional channel) ()
    (cond (channel
           (send ".host ~a" channel)
           (respond event "Now hosting ~a" channel))
          (T
           (send ".unhost")
           (respond event "Now no longer hosting."))))
  
  (define-twitch-command mod (user) ()
    (send ".mod ~a" user)
    (respond event "User ~a has been modded." user))
  
  (define-twitch-command unmod (user) ()
    (send ".unmod ~a" user)
    (respond event "User ~a has been unmodded." user))
  
  (defvar *emotes* ())
  
negative.code:   (load-emotes)
    (respond event "Emotes reloaded."))
  
  (define-twitch-command ban-emotes (&optional (mode "600")) ()
    (let ((mode (cond ((string-equal mode "none") NIL)
                      ((string-equal mode "scold") :scold)
                      ((string-equal mode "infinity") :infinity)
                      ((parse-integer mode :junk-allowed T)
                       (parse-integer mode :junk-allowed T)))))
      (setf (gethash channel (or (uc:config-tree :emotes-banned)
                                 (setf (uc:config-tree :emotes-banned) (make-hash-table :test 'equalp)))) mode)
      (v:info :twitch "[~a] Setting emote ban mode to ~a" channel mode)
      (if mode
          (respond event "Emotes are now banned.")
          (respond event "Emotes are now unbanned."))))
  