'(("debug" "localhost" 6697)
("libera" "irc.libera.chat" 6697)
("tilde" "tilde.chat" 6697)
+ ("sdf" "irc.sdf.org" 6697)
("freenode" "chat.freenode.net" 6697)
("mbr" "mbrserver.com" 6667 :notls))
"IRC networks."
(if murk-show-joins
(murk-display-notice nil nick " quit: " reason))))
+ ("NOTICE"
+ (let ((nick (murk-msg-src msg))
+ (channel (car (murk-msg-params msg)))
+ (text (cadr (murk-msg-params msg))))
+ (pcase text
+ ((rx (: "\01VERSION "
+ (let version (* (not "\01")))
+ "\01"))
+ (murk-display-notice (murk-get-context server)
+ "CTCP version reply from " nick ": " version))
+ (_
+ (murk-display-notice nil text)))))
+
("PRIVMSG"
(let* ((from (murk-msg-src msg))
(params (murk-msg-params msg))
("USERS" "List nicks of users in current context." murk-command-users)
("MSG" "Send private message to user." murk-command-msg murk-nick-completions)
("ME" "Display action." murk-command-me)
+ ("VERSION" "Request version of another user's client via CTCP." murk-command-version murk-nick-completions)
("CLEAR" "Clear buffer text." murk-command-clear murk-context-completions)
("HELP" "Display help on client commands." murk-command-help murk-help-completions))
"Table of commands explicitly supported by murk.")
(murk-display-notice nil "Usage: /me <action>"))
(murk-display-notice nil "No current channel."))))
+(defun murk-command-version (params)
+ (let ((ctx (murk-current-context)))
+ (if ctx
+ (if params
+ (let ((server (murk-context-server ctx))
+ (nick (car params)))
+ (murk-send-msg server
+ (lurk-msg nil nil "PRIVMSG"
+ (list nick "\01VERSION\01")))
+ (murk-display-notice ctx "CTCP version request sent to "
+ nick " on " server))
+ (murk-display-notice ctx "Usage: /version <nick>"))
+ (murk-display-notice nil "No current channel."))))
+
(defun murk-command-users (_params)
(let ((ctx (murk-current-context)))
(if (and ctx (not (murk-server-context-p ctx)))