            [:form.new-bot-form
             {:action "/"
              :on-submit (fn [e] (.preventDefault e)
-                          (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 @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"

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

               [: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" :disabled (not @bot-valid?)}]]

           :created
           [:div
