* riece-commands.el (riece-command-kick-with-ban): New command.
[riece] / lisp / riece-commands.el
index 8efa507..60f4c60 100644 (file)
@@ -234,6 +234,39 @@ the layout to the selected layout-name."
             user))
    riece-current-channel))
 
+(defun riece-command-kick-with-ban (user pattern &optional message)
+  (interactive
+   (let ((completion-ignore-case t)
+        users patterns)
+     (riece-check-channel-commands-are-usable t)
+     (riece-with-server-buffer (riece-identity-server riece-current-channel)
+       (setq users (riece-channel-get-users (riece-identity-prefix
+                                            riece-current-channel))
+            patterns (mapcar
+                      (lambda (user)
+                        (list (concat (car user) "!"
+                                      (riece-user-get-user-at-host
+                                       (car user)))))
+                      users)))
+     (list
+      (completing-read (riece-mcat "Kick user: ") users)
+      (completing-read (riece-mcat "Ban pattern: ") patterns)
+      (if current-prefix-arg
+         (read-string "Message: ")))))
+  (riece-send-string (format "MODE %s :+b %s\r\n"
+                            (riece-identity-prefix riece-current-channel)
+                            pattern)
+                    riece-current-channel)
+  (riece-send-string
+   (if message
+       (format "KICK %s %s :%s\r\n"
+              (riece-identity-prefix riece-current-channel)
+              user message)
+     (format "KICK %s %s\r\n"
+            (riece-identity-prefix riece-current-channel)
+            user))
+   riece-current-channel))
+
 (defun riece-command-names (pattern)
   (interactive
    (let ((completion-ignore-case t))