]> Pileus Git - ~andy/rhawk/blobdiff - irc.awk
Convert privmsg to say
[~andy/rhawk] / irc.awk
diff --git a/irc.awk b/irc.awk
index 6fc0c468ead2df40d8d3c1dc32d771ab237edf16..880f76b2e0c0070718a677696e9d31874bc59375 100644 (file)
--- a/irc.awk
+++ b/irc.awk
 
 # Debugging
 function send(msg) {
-       #print "  > " msg > "/dev/stderr"
+       print "  > " msg > "/dev/stderr"
        print msg
-       #system("sleep 1")
+       system("sleep 1")
        fflush()
 }
 
 // {
        #print ""         > "/dev/stderr"
-       #print "  < " $0  > "/dev/stderr"
+       print "  < " $0  > "/dev/stderr"
 }
 
 function debug(msg) {
@@ -36,12 +36,14 @@ function debug(msg) {
 }
 
 function set() {
-       debug("CMD:  " CMD)
-       debug("SRC:  " SRC)
-       debug("DST:  " DST)
-       debug("FROM: " FROM)
-       debug("TO:   " TO)
-       debug("MSG:  " MSG)
+       debug("CMD:  [" CMD  "]")
+       debug("SRC:  [" SRC  "]")
+       debug("DST:  [" DST  "]")
+       debug("FROM: [" FROM "]")
+       debug("TO:   [" TO   "]")
+       debug("ARG:  [" ARG  "]")
+       debug("MSG:  [" MSG  "]")
+       debug("$0:   [" $0   "]")
 }
 
 # Functions
@@ -56,16 +58,26 @@ function connect(server, nick, channel) {
                send("NICK " nick)
        }
 }
-function privmsg(to, msg) {
+
+function say(to, msg) {
+       if (msg == "") {
+               msg = to
+               if (DST ~ "^#")
+                       to = DST
+               else if (DST == NICK && FROM)
+                       to = FROM
+               else
+                       to = CHANNEL
+       }
        send("PRIVMSG " to " :" msg)
 }
-function say(msg) {
-       if (DST ~ "^#")
-               privmsg(DST, msg)
-       else if (DST == NICK && FROM)
-               privmsg(FROM, msg)
+
+function action(to, msg)
+{
+       if (msg)
+               say(to, "\001ACTION " msg "\001")
        else
-               privmsg(CHANNEL, msg)
+               say("\001ACTION " to "\001")
 }
 
 function reply(msg) {
@@ -74,12 +86,17 @@ function reply(msg) {
 
 function join(chan) {
        send("JOIN " chan)
+       send("TOPIC " chan)
 }
 
 function part(chan) {
        send("PART " chan)
 }
 
+function topic(chan, msg) {
+       send("TOPIC " chan " :" msg)
+}
+
 # Reloading
 BEGIN {
        if (CHILD == "") {
@@ -103,14 +120,15 @@ function reload() {
 
 # Input parsing
 // {
-       match($0, /(:([^ ]+) +)?(([A-Z0-9]+) +)(([^ ]+) +)?([^:]*:(.*))/, arr);
-       gsub(/\s+/,     " ", arr[8])
-       gsub(/^ | $/,    "", arr[8])
-       gsub(/\3[0-9]*/, "", arr[8])
+       gsub(/\s+/,     " ")
+       gsub(/^ | $/,    "")
+       gsub(/\3[0-9]*/, "")
+       match($0, /(:([^ ]+) +)?(([A-Z0-9]+) +)(([^ ]+) +)?(([^: ]+) +)?(:(.*))/, arr);
        SRC = arr[2]
        CMD = arr[4]
        DST = arr[6]
-       MSG = arr[8]
+       ARG = arr[8]
+       MSG = arr[10]
 
        match(SRC, /([^! ]+)!/, arr);
        FROM = arr[1]
@@ -121,6 +139,8 @@ function reload() {
 
        if (CMD == "PRIVMSG" && DST == NICK && FROM)
                TO = DST
+
+       #set()
 }
 
 # IRC client
@@ -131,3 +151,12 @@ CMD == "001" && MSG ~ /Welcome/ {
 CMD == "PING" {
        send("PING " MSG)
 }
+
+CMD == "332" {
+       CMD = "TOPIC"
+       DST = ARG
+}
+
+CMD == "TOPIC" {
+       topics[DST] = MSG
+}