+(defun murk-command-connect (params)
+ (if params
+ (let ((network (car params)))
+ (murk-display-notice nil "Attempting to connect to " network "...")
+ (murk-connect network))
+ (murk-display-notice nil "Usage: /connect <network>")))
+
+(defun murk-command-networks (_params)
+ (murk-display-notice nil "Currently-known networks:")
+ (dolist (row murk-networks)
+ (seq-let (network server port &rest _others) row
+ (murk-display-notice nil "\t" network
+ " [" server
+ " " (number-to-string port) "]")))
+ (murk-display-notice nil "(Modify the `murk-networks' variable to add more.)"))
+
+(defun murk-command-quit (params)
+ (let ((ctx (murk-current-context)))
+ (if (not ctx)
+ (murk-display-error "No current context")
+ (let ((quit-msg (if params (string-join params " ") murk-default-quit-msg)))
+ (murk-send-msg
+ (murk-context-server ctx)
+ (murk-msg nil nil "QUIT" quit-msg))))))
+
+(defun murk-command-join (params)
+ (if params
+ (let ((server (murk-context-server (murk-current-context))))
+ (dolist (channel params)
+ (murk-send-msg server (murk-msg nil nil "JOIN" channel))))
+ (murk-display-notice nil "Usage: /join channel [channel2 ...]")))
+
+(defun murk-command-part (params)
+ (let* ((server (murk-context-server (murk-current-context)))
+ (channel (if params
+ (car params)
+ (murk-context-name (murk-current-context)))))
+ (if channel
+ (murk-send-msg server (murk-msg nil nil "PART" channel))
+ (murk-display-error "No current channel to leave"))))
+
+(defun murk-command-msg (params)
+ (let ((server (murk-context-server (murk-current-context))))
+ (if (and params (>= (length params) 2))
+ (let ((to (car params))
+ (text (string-join (cdr params) " ")))
+ (murk-send-msg server (murk-msg nil nil "PRIVMSG" to text))
+ (murk-display-message server
+ (murk-connection-nick server)
+ to text))
+ (murk-display-notice nil "Usage: /msg <nick> <message>"))))