]> Pileus Git - ~andy/rhawk/blobdiff - email.awk
Swizzle .show
[~andy/rhawk] / email.awk
index a417f9e3bf659304511703496c43ae7bb450e580..7f007b5e277942c830f171521bda2ca03c99da2d 100644 (file)
--- a/email.awk
+++ b/email.awk
@@ -1,22 +1,33 @@
 @include "json.awk"
 
 # Save email addresses
-BEGIN { json_load("var/mail.txt", mail_enable) }
-END   { json_save("var/mail.txt", mail_enable) }
+END {
+       json_save("var/mail.json", mail_enable)
+}
 
-# Email notifications
 BEGIN {
-       mail_hist  = 60 # Send 60 seconds of backlog
-       mail_delay = 60 # Wait 60 seconds after last mention before mailing
-
-       mail_from  = NICK "<andy753421@gmail.com>"
-       mail_err   = "If you received this message in error,\n" \
-                    "someone in #rhnoise is being a jerk"
+       json_load("var/mail.json", mail_enable)
+       for (_user in mail_enable)
+               debug("watching " mail_enable[_user] " for " _user)
+}
 
-       for (_user in mail_enable) 
+TO == NICK && /^sync/ {
+       json_load("var/mail.json", mail_enable)
+       for (_user in mail_enable)
                debug("watching " mail_enable[_user] " for " _user)
 }
 
+# Email notifications
+BEGIN {
+       mail_hist   = 5*60 # If the users has not spoken withn mail_before before
+       mail_before = 5*60 # someone mentions their name and does not reply within
+       mail_after  = 5*60 # mail_after seconds, email them hist seconds of the backlog
+
+       mail_from   = NICK "<andy753421@gmail.com>"
+       mail_err    = "If you received this message in error,\n" \
+                     "someone in #rhnoise is being a jerk"
+}
+
 function mail_send(addr, subj, body,
                   sendmail, errmsg)
 {
@@ -42,7 +53,7 @@ function mail_prep(user, chan,
        for (si = 1; si <= sn; si++) {
                sec = ss[si]
                mn = length(mail_log[chan][sec])
-               for (mi = 0; mi < mn; mi++) { 
+               for (mi = 0; mi < mn; mi++) {
                        msg = mail_log[chan][sec][mi]
                        if (sec > mail_ready[user][chan] - mail_hist) {
                                if (msg ~ user)
@@ -53,7 +64,7 @@ function mail_prep(user, chan,
                        }
                }
        }
-       privmsg(chan, "notifying " user " at " addr)
+       say(chan, "notifying " user " at " addr)
        mail_send(addr, "Message for " user " in " chan, body)
        delete mail_ready[user][chan]
 }
@@ -64,38 +75,64 @@ function mail_run(  user, chan, ready, time)
        for (chan in mail_ready[user]) {
                ready = mail_ready[user][chan]
                delay = systime() - ready
-               if (ready && delay > mail_delay)
+               if (ready && delay > mail_after)
                        mail_prep(user, chan)
        }
 }
 
-FROM ~ OWNER &&
+AUTH == OWNER &&
+TO == NICK &&
 /^e?mail .* .*/ {
        reply("notifying " $2 " for " $3)
        mail_enable[$3] = $2
 }
 
+TO == NICK &&
 /^e?mail  *[^ ]*$/ {
-       reply("notifying " $2 " for " FROM)
-       mail_enable[FROM] = $2
+       _user = FROM
+       _addr = $2
+       gsub(/[^a-zA-Z0-9_+@.-]/, "", _user)
+       gsub(/[^a-zA-Z0-9_+@.-]/, "", _addr)
+       reply("notifying " _addr " for " _user)
+       mail_enable[_user] = _addr
+}
+
+AUTH == OWNER &&
+TO == NICK &&
+/^stfu .*/ {
+       reply("well fine then")
+       delete mail_enable[$2]
+       delete mail_ready[$2]
+       delete mail_seen[$2]
 }
 
+TO == NICK &&
 /^stfu$/ {
        reply("well fine then")
        delete mail_enable[FROM]
        delete mail_ready[FROM]
+       delete mail_seen[FROM]
 }
 
-DST ~ /^#.*/ {
+TO == NICK &&
+/^who/ {
        for (_user in mail_enable)
-               if ($0 ~ "\\<"_user"\\>") {
+               reply("\"" _user "\" <" mail_enable[_user] ">")
+}
+
+DST ~ /^#.*/ {
+       for (_user in mail_enable) {
+               _idle = systime() - mail_seen[_user]
+               if ($0 ~ "\\<"_user"\\>" && _idle > mail_before) {
                        mail_ready[_user][DST] = systime()
                        debug("queueing messages to " DST " for " _user)
                }
+       }
 }
 
 FROM in mail_enable {
        delete mail_ready[FROM]
+       mail_seen[FROM] = systime()
        debug("clearing message for " FROM)
 }