shithub: irc.myr

Download patch

ref: cf08bf12ea140debb83c4c983f00f61a8442c82f
parent: 12c04cb48f94cae477a388d2740fa15d02ccf0be
author: Ori Bernstein <ori@eigenstate.org>
date: Sun Nov 19 18:14:53 EST 2017

Untested implementation of /msg

--- a/irc.myr
+++ b/irc.myr
@@ -416,11 +416,13 @@
 	| "user":	changeuser(irc, sp[1:])
 	| "srv":	changeserver(irc, sp[1:])
 	| "names":	listnames(irc, sp[1:])
+	| "msg":	privmsg(irc, sp[1:])
 	| c:		status(irc, irc.self, "unknown command: /{}", text)
 	;;
 	std.slfree(sp)
 }
 
+
 const changenick = {irc, args
 	if args.len != 1
 		status(irc, irc.self, "/nick: invalid args {j= }", args)
@@ -713,6 +715,21 @@
 	;;
 }
 
+const privmsg = {irc, msg
+	if msg.len <= 1
+		status(irc, irc.self, "missing message in /msg")
+	elif msg.len > 3 && std.eq(msg[1], "-srv")
+		match findsrv(irc, msg[2])
+		| `std.Some s:	send(irc, s, "PRIVMSG {} :{j= }\r\n", msg[0], msg[3:])
+		| `std.None:	-> status(irc, irc.self, "can't message: no server '{}", msg[1])
+		;;
+	else
+		match cursrv(irc)
+		| `std.Some s:	send(irc, s, "PRIVMSG {} :{j= }\r\n", msg[0], msg[1:])
+		| `std.None:	-> status(irc, irc.self, "cant message: no server\n")
+		;;
+	;;
+}
 
 const parse = {msg
 	var w, hdr, cmd, args
--