* riece-ruby.el: Moved add-on stuff to riece-eval-ruby.el.
[riece] / lisp / riece-400.el
index 1c302f2..e469edf 100644 (file)
@@ -28,7 +28,7 @@
 (require 'riece-misc)
 
 (eval-when-compile
-  (autoload 'riece-default-handle-numeric-reply "riece-filter"))
+  (autoload 'riece-default-handle-numeric-reply "riece-handle"))
 (defun riece-handle-default-400-message (prefix number name string)
   (riece-default-handle-numeric-reply
    riece-error-prefix prefix number name string))
@@ -37,8 +37,9 @@
   (condition-case nil
       (let (inhibit-quit)
        (read-string prompt))
-    (quit)))
-  
+    (quit
+     (ignore (message "%s" (concat prompt "Quit"))))))
+
 (defun riece-handle-432-message (prefix number name string)
   "ERR_ERRONEUSNICKNAME        \"<nick> :Erroneous nickname\"."
   (let ((nickname
   (message "Password incorrect from %s." prefix)
   (setq riece-reconnect-with-password t))
 
+(defun riece-handle-475-message (prefix number name string)
+  "ERR_BADCHANNELKEY \"<channel> :Cannot join channel (+k)\"."
+  (let* ((parameters (riece-split-parameters string))
+        (channel-identity (riece-make-identity (car parameters)
+                                               riece-server-name))
+        key)
+    (message "%s: %s" (car parameters) (nth 1 parameters))
+    (setq key
+         (condition-case nil
+             (let (inhibit-quit)
+               (riece-read-passwd
+                (format "Key for %s: "
+                        (riece-format-identity channel-identity t))))
+           (quit
+            (message "Key for %s: Quit"
+                     (riece-format-identity channel-identity t))
+            'quit)))
+    (unless (eq key 'quit)
+      (riece-command-join-channel channel-identity key))))
+
 (provide 'riece-400)
 
 ;;; riece-400.el ends here