     (when-let [tokens (seq (edn/read-string (str "(" (-> s
                                                          (str/replace "“" "\"") ; replace smart quotes
                                                          (str/replace "”" "\"")) ")")))]
-      (log/debug (u/format-color 'magenta tokens))
+      (println (u/format-color 'magenta tokens))
       (apply apply-metabot-fn tokens))))
 
 

(defn- message->command-str [{:keys [text]}]
  (u/prog1 (when (seq text)
             (second (re-matches #"^mea?ta?boa?t\s+(.*)$" text)))
    (log/debug (u/format-color 'yellow <>))))

(defn- respond-to-message! [message response]
  (when response
    (let [response (if (coll? response) (str "```\n" (u/pprint-to-str response) "```")
                       (str response))]
      (when (seq response)
        (log/debug (u/format-color 'green response))
        (slack/post-chat-message! (:channel message) response)))))

(defn- handle-slack-message [message]


(defn- handle-slack-event [socket start-time event]
  (when-not (= socket @websocket)
    (println "Go home websocket, you're drunk.")
    (s/close! socket)
    (throw (Exception.)))

  (when-let [event (json/parse-string event keyword)]
    (when (and (human-message? event)
               (> (event-timestamp-ms event) start-time))
      (println (u/pprint-to-str 'cyan event))
      (binding [*channel-id* (:channel event)]
        (do-async (handle-slack-message event))))))

