                [:img {:src avatar}])
              [avatar-upload-view {:on-upload (fn [url] (swap! new-bot assoc :avatar url))
                                   :dragging-change (partial reset! dragging?)}]]
-            [:input {:type "submit" :value "Add Bot"}]]
+            [:input {:type "submit" :value "Add Bot" :disabled (not @bot-valid?)}]]
 
            :created
            [:div

        dragging? (r/atom false)
        error (r/atom nil)
        new-bot (r/atom {})
        state (r/atom :initial)]
    (fn []
      (when @admin?
        [:div.add-bot

           [:form.new-bot-form
            {:action "/"
             :on-submit (fn [e] (.preventDefault e)
                          (when @bot-valid?
                            (reset! error nil)
                            (reset! state :creating)
                            (swap! new-bot assoc :group-id @group-id)
                            (dispatch! :new-bot
                                       {:bot @new-bot
                                        :on-complete
                                        (fn [created]
                                          (if created
                                            (do (reset! new-bot created)
                                                (reset! state :created))
                                            (do
                                              (reset! error "Failed to create bot")
                                              (reset! state :initial))))})
                            (reset! state :creating)))}
            (when-let [err @error]
              [:div.error err])
            [:label "Bot Name"
