10 json_load("var/login.json", login);
11 json_load("var/plain.json", plain);
13 OWNER = login["owner"];
15 connect(login["server"], \
31 AUTH == OWNER && TO == NICK && /^die in a fire/ {
32 say("Ack, argh, barasdjf..")
36 AUTH == OWNER && TO == NICK && /^reload/ {
41 AUTH == OWNER && TO == NICK && /^rejoin/ {
47 AUTH == OWNER && TO == NICK && /^(join|part)/ {
48 if (match(MSG, /(join|part) +(#+\w+)/, arr)) {
49 if (arr[1] == "join") join(arr[2]);
50 if (arr[1] == "part") part(arr[2]);
55 AUTH == OWNER && TO == NICK && /^\.msg/ {
56 match(MSG, /.*\.msg +(#*\w+) +(.*)/, arr)
57 send("PRIVMSG " arr[1] " :" arr[2])
61 CMD == "KICK" && ARG[2] == NICK {
62 kick_delay = (kick_delay + 2) * 2
63 system("sleep " kick_delay)
65 reply("I feel happy!")
69 FROM ~ /bo+t$|rhnoise/ {
73 CMD == "NICK" && FROM in bots {
81 json_save("var/plain.json", plain);
86 json_save("var/plain.json", plain);
90 function email(to, from, subj, body, sendmail)
92 from = NICK "<andy@pileus.org>"
93 subj = "Update sfvlug.org!"
94 body = "The next SFVLUG meeting is TBA!"
95 sendmail = "/usr/sbin/sendmail '" to "'"
96 print "To: " to | sendmail
97 print "From: " from | sendmail
98 print "Subject: " subj | sendmail
100 print body | sendmail
101 say("Topic out of date, emailing " to);
105 BEGIN { pollchan = "#sfvlug" }
106 (CMD == "PING" && systime()-lastpoll > 60*60*24) ||
107 (CMD == "PRIVMSG" && /^\.poll/) {
108 if (!TOPICS[pollchan]) {
109 debug("Unknown topic for " pollchan);
110 send("TOPIC " pollchan)
113 _curl = "curl -s http://sfvlug.org/"
114 _day = "(Sun|Mon|Tue|Wed|Thu|Fri|Sat)"
115 _web_tba = "next meeting is: TBA"
116 _web_ptrn = "next meeting.*" _day "\\w+[, ]+([A-Z]\\w+) +([0-9]+)[, ]+([0-9]+)"
117 _irc_ptrn = _day "\\w*[, ]+([A-Z]\\w+) +([0-9]+)"
118 while (_curl | getline _line) {
119 #if (match(_line, _web_tba))
120 # email("Brian <brian@zimage.com>");
121 if (match(_line, _web_ptrn, _parts)) {
122 _date = _parts[1] " " _parts[2] " " _parts[3]
123 _topic = TOPICS[pollchan]
124 sub(_irc_ptrn, _date, _topic)
125 if (_topic != TOPICS[pollchan])
126 topic(pollchan, TOPICS[pollchan] = _topic)
128 debug("topic is already correct")
137 function uptime(time, fmt) {
138 fmt = "%d:%02d:%02d:%02d"
139 fmt = "%d days %02d:%02d:%02d"
142 time / (60*60 ) % 24,
147 _cmd = "git describe --always --dirty";
148 _cmd | getline up_version;
150 up_reload = systime();
153 say("version: " up_version)
157 say("uptime: " uptime(_now - START) ", " \
158 "reload: " uptime(_now - up_reload))
163 _who = $2 ? $2 : FROM
165 say("nick=" USERS[_who]["nick"] " " \
166 "user=" USERS[_who]["user"] " " \
167 "auth=" USERS[_who]["auth"] " " \
168 "real=" USERS[_who]["real"] " " \
169 "host=" USERS[_who]["host"])
171 say("no auth info for " _who)
175 TO == NICK && /^/ { extra = "" }
176 TO == NICK && /^\.?fortune.*-o/ { extra = "-o" }
177 TO == NICK && /^\.?fortune/ {
178 gsub(/.*\.?fortune *|-[a-z]* *|[^a-zA-Z0-9 ]/, "", MSG)
179 cmd = "fortune " extra " " (MSG ? "-m '" MSG "'" : "-s")
181 while (cmd | getline _fortune && _lines < 5) {
192 morse[".-.-.-" ] = "."
193 morse["--..--" ] = ","
194 morse["..--.." ] = "?"
195 morse[".----." ] = "'"
196 morse["-.-.--" ] = "!"
197 morse["-..-." ] = "/"
198 morse["-.--." ] = "("
199 morse["-.--.-" ] = ")"
200 morse[".-..." ] = "&"
201 morse["---..." ] = ":"
202 morse["-.-.-." ] = ";"
203 morse["-...-" ] = "="
204 morse[".-.-." ] = "+"
205 morse["-....-" ] = "-"
206 morse["..--.-" ] = "_"
207 morse[".-..-." ] = "\""
208 morse["...-..-"] = "$"
209 morse[".--.-." ] = "@"
236 morse["-----" ] = "0"
237 morse[".----" ] = "1"
238 morse["..---" ] = "2"
239 morse["...--" ] = "3"
240 morse["....-" ] = "4"
241 morse["....." ] = "5"
242 morse["-...." ] = "6"
243 morse["--..." ] = "7"
244 morse["---.." ] = "8"
245 morse["----." ] = "9"
249 gsub(/[^.\-\/]/, " ")
251 for (i=2; i<=NF; i++)
253 _str = _str morse[$i]
257 reply("hush it, you pile of bologna")
261 AUTH == OWNER && /^go go gadget woop/ {
263 say(".delay " i " seconds; .woop " i)
267 gsub(/[^Oo]/, "", $1)
274 for (i=1; i<_len; i++)
275 _woop = _woop " " msg
279 TO == NICK && /^[Ww][Oo]+[Pp] *([0-9]*)/ {
291 TO == NICK && DST ~ /^#/ {
300 say("Awk, awk, awk! I'm a bird!")
304 ((TO == NICK && /(help|halp)/) ||
305 /^[^.](help|halp)/) {
306 reply("Nothing can help you now..")
309 /(\<[Hh][Oo]\>.*){3}/ {
310 say("\00309Merry \00304Christmas!")
314 tolower($0) ~ /\<cloud\>/ {
315 _cmd = "shuf clouds.txt"
316 _cmd | getline _cloud
321 /^headshot [Cc]hristmas/ {
322 say(".load Christmas")
324 say(".unload Christmas")
327 FROM == "rhnoise" && $2 == "slaps" && $3 == NICK {
337 FROM == "rhnoise" && load_mod {
338 say(".load " load_mod)
339 say("rhnoise: You slag!")
344 (TO == "rhnoise" && /^load \w+/) ||
345 (DST == "#rhniose" && /^\.load [a-z]\w+/) {
346 gsub(/[^a-zA-Z0-9_]/, " ")
347 load_mod = toupper(substr($2,1,1)) substr($2,2);
350 (DST == "#rhnoise" && /^\.line /) {
353 say("scalawag: You slag!")
356 (DST == "#rhnoise" && /^\.qdb 268$/) {
360 (DST == "#rhnoise" && /\.qdb *268/) {
370 #FROM == "rhnoise" && !length(user_scores) {
371 # if (split(MSG, _parts, /, /)) {
372 # for (_i=1; _i<=length(_parts); _i++) {
373 # split(_parts[_i], _tmp, ": ");
374 # user_scores[_i]["user"] = _tmp[1];
375 # user_scores[_i]["score"] = _tmp[2];
380 #FROM == "rhnoise" && /^User Scores:$/ {
384 #AUTH == OWNER && length(user_scores) &&
385 #tolower($0) ~ /\<nuclear launch detected\>/ {
386 # for (_i=1; _i<=length(user_scores); _i++)
387 # say(user_scores[_i]["user"] "--");