shithub: irc.myr

Download patch

ref: bbb7ff33093713b0e60442a5838d3c28def2ca31
parent: ac1bba5919826c706033a0b2d7ea22828668c6ba
author: Ori Bernstein <ori@eigenstate.org>
date: Sun Aug 5 12:11:20 EDT 2018

Be a bit more compliant.

--- a/irc.myr
+++ b/irc.myr
@@ -42,6 +42,7 @@
 		| `std.Some l:	ln = l
 		| `std.None:	-> void
 		;;
+
 		(src, cmd, args) = parse(ln)
 		a0 = args.len > 0 ? args[0] : ""
 		uppercase(cmd)
@@ -62,7 +63,6 @@
 		| "376":	srvmsg(irc, args)
 		| "333":	srvmsg(irc, args)
 		| "470":	srvmsg(irc, args)
-		| "NOTICE":	srvmsg(irc, args)
 		| "332":	topic(irc, srv, args)
 		| "353":	addusers(irc, srv, args)
 		| "QUIT":	deluser(irc, srv, src)
@@ -69,6 +69,7 @@
 		| "PART":	delchanuser(irc, srv, src, args)
 		| "366":	shownames(irc, srv, args, 1)
 		| "401":	badmsg(irc, srv, args, ln)
+		| "NOTICE":	receivemsg(irc, srv, src, args)
 		| "PRIVMSG":	receivemsg(irc, srv, src, args)
 		| "PING":	send(irc, srv, "PONG :{}\r\n", a0)
 		| "JOIN":	joined(irc, srv, src, args)
@@ -141,15 +142,19 @@
 const receivemsg = {irc, srv, src, args
 	var c
 
-	if std.sleq(args[0], srv.nick)
-		c = name2chan(irc, srv, displayname(src))
-	else
-		c = name2chan(irc, srv, args[0])
-	;;
-	if args.len > 1 && isctcp(args[1]) 
-		ctcpmsg(irc, srv, c, src, args[1][1:args[1].len-1])
-	else
-		chanmsg(irc, srv, c, src, args[1])
+	for name : std.bysplit(args[0], ",")
+		if std.sleq(name, srv.nick)
+			c = name2chan(irc, srv, displayname(src))
+		elif std.eq(name, "*") || std.eq(name, "?")
+			c = irc.self
+		else
+			c = name2chan(irc, srv, name)
+		;;
+		if args.len > 1 && isctcp(args[1]) 
+			ctcpmsg(irc, srv, c, src, args[1][1:args[1].len-1])
+		else
+			chanmsg(irc, srv, c, src, args[1])
+		;;
 	;;
 }
 
--