+(defun riece-handle-set-topic (prefix number name decoded remove)
+ (let* ((parameters (riece-split-parameters (riece-decoded-string decoded)))
+ (channel (car parameters))
+ topic
+ (channel-identity (riece-make-identity channel riece-server-name))
+ (buffer (riece-channel-buffer channel-identity)))
+ (if remove
+ (riece-channel-set-topic (riece-get-channel channel) nil)
+ (setq parameters (riece-split-parameters
+ (riece-decoded-string-for-identity decoded
+ channel-identity))
+ topic (nth 1 parameters))
+ (riece-channel-set-topic (riece-get-channel channel) topic)
+ (riece-insert-info buffer (concat (riece-mcat "Topic: ") topic "\n"))
+ (riece-insert-info
+ (if (and riece-channel-buffer-mode
+ (not (eq buffer riece-channel-buffer)))
+ (list riece-dialogue-buffer riece-others-buffer)
+ riece-dialogue-buffer)
+ (concat
+ (riece-concat-server-name
+ (format (riece-mcat "Topic for %s: %s")
+ (riece-format-identity channel-identity t)
+ topic))
+ "\n")))
+ (riece-emit-signal 'channel-topic-changed channel-identity topic)))
+
+(defun riece-handle-331-message (prefix number name string)
+ (riece-handle-set-topic prefix number name string t))
+
+(defun riece-handle-332-message (prefix number name string)
+ (riece-handle-set-topic prefix number name string nil))
+
+(defun riece-handle-341-message (prefix number name string)
+ (if (string-match "^\\([^ ]+\\) " string)
+ (let* ((channel (substring string (match-end 0)))
+ (user (match-string 1 string))
+ (channel-identity (riece-make-identity channel riece-server-name))
+ (buffer (riece-channel-buffer channel-identity)))
+ (riece-insert-info buffer (format (riece-mcat "Inviting %s\n") user))
+ (riece-insert-info
+ (if (and riece-channel-buffer-mode
+ (not (eq buffer riece-channel-buffer)))
+ (list riece-dialogue-buffer riece-others-buffer)
+ riece-dialogue-buffer)
+ (concat
+ (riece-concat-server-name
+ (format (riece-mcat "Inviting %s to %s") user
+ (riece-format-identity channel-identity t)))
+ "\n")))))
+
+(defun riece-handle-352-message (prefix number name string)
+ (if (string-match "^\\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) \\([HG]\\)\\(\\*\\)?\\([@+]\\)? :\\([0-9]+\\) " string)