+ ((rx (: "TOPIC" " " (let new-topic (* not-newline))))
+ (lirc-send-msg (lirc-msg nil nil "TOPIC" lirc-current-channel new-topic)))
+
+ ((rx (: "me" " " (let action (* not-newline))))
+ (lirc-send-msg (lirc-msg nil nil "PRIVMSG"
+ (list lirc-current-channel
+ (concat "\01ACTION " action "\01"))))
+ (lirc-display-action lirc-nick action))
+
+ ((rx (: "VERSION" " " (let nick (* (not whitespace)))))
+ (lirc-send-msg (lirc-msg nil nil "PRIVMSG"
+ (list nick "\01VERSION\01")))
+ (lirc-display-notice "CTCP version request sent to " nick))
+
+ ((rx "PART" (opt (: " " (let channel (* not-newline)))))
+ (if (or lirc-current-channel channel)
+ (lirc-send-msg (lirc-msg nil nil "PART" (if channel
+ channel
+ lirc-current-channel)))
+ (lirc-display-error "No current channel to leave.")))
+
+ ((rx "MSG "
+ (let target (* (not whitespace)))
+ " "
+ (let text (* not-newline)))
+ (lirc-send-msg (lirc-msg nil nil "PRIVMSG" target text))
+ (lirc-display-message target lirc-nick text))
+
+ ((rx (: (let cmd-str (+ (not whitespace)))
+ (opt (: " " (let params-str (* not-newline))))))
+ (lirc-send-msg (lirc-msg nil nil (upcase cmd-str)