]> Pileus Git - ~andy/rhawk/blob - rhawk
better
[~andy/rhawk] / rhawk
1 #!awk -f
2
3 @include "irc.awk"
4 @include "spades.awk"
5
6 # Initialization
7 BEGIN {
8         OWNER = "andy753421"
9         connect("localhost", "rhawk", "#rhtest");
10 }
11
12 # Admin
13 FROM == OWNER && TO == NICK && /^die in a fire/ {
14         say("Ack, argh, barasdjf..")
15         quit()
16 }
17
18 FROM == OWNER && TO == NICK && /^reload/ {
19         say("Reloading..")
20         reload()
21 }
22
23 FROM == OWNER && TO == NICK && /^rejoin/ {
24         reply("joining..")
25         join("#rhnoise")
26         next
27 }
28
29 FROM == OWNER && TO == NICK && /^(join|part)/ {
30         match(MSG, /(join|part) +(#+\w+)/, arr)
31         if (arr[1] && arr[2]) {
32                 send(toupper(arr[1]) " " arr[2]);
33                 next
34         }
35 }
36
37 FROM == OWNER && TO == NICK && /^\.msg/ {
38         match(MSG, /.*\.msg +(#*\w+) +(.*)/, arr)
39         send("PRIVMSG " arr[1] " :" arr[2])
40 }
41
42 # Kick handling
43 CMD == "KICK" && ARG == NICK {
44         kick_delay = (kick_delay + 2) * 2
45         system("sleep " kick_delay)
46         join(DST)
47         reply("I feel happy!")
48 }
49
50 # Identify bots
51 FROM ~ /bo+t$|rhnoise/ {
52         bots[FROM] = 1
53 }
54
55 CMD == "NICK" && FROM in bots {
56         bots[MSG] = FROM
57 }
58
59
60 # Unicode
61 /[Uu]nicode :-?\(/ {
62         plain[FROM] = 1
63 }
64
65 /[Uu]nicode :-?\)/ {
66         plain[FROM] = 0
67 }
68
69 # SFV Lug
70 #pollchan = "#sfvlug"
71 #(CMD == "PING"    && systime()-lastpoll > 60*60*24) ||
72 #(CMD == "PRIVMSG" && DST == pollchan && /^\.poll/) {
73 #       if (!topics[pollchan])
74 #               next
75 #       cmd = "curl -s http://sfvlug.org/"
76 #       day = "(Sun|Mon|Tue|Wed|Thu|Fri|Sat)"
77 #       web = "next meeting.*" day "\\w+[, ]+([A-Z]\\w+) +([0-9]+)[, ]+([0-9]+)"
78 #       irc = day "\\w*[, ]+([A-Z]\\w+) +([0-9]+)"
79 #       while (cmd | getline line) {
80 #               if (match(line, web, arr)) {
81 #                       new = arr[1] " " arr[2] " " arr[3]
82 #                       sub(irc, new, topics[pollchan])
83 #                       topic(pollchan, topics[pollchan])
84 #                       break
85 #               }
86 #       }
87 #       lastpoll = systime()
88 #       close(cmd)
89 #}
90
91
92 # Fortune
93 TO == NICK && /^/             { extra = ""   }
94 TO == NICK && /^.fortune.*-o/ { extra = "-o" }
95 TO == NICK && /^.fortune/     {
96         gsub(/.*\.fortune *|-[a-z]* *|[^a-zA-Z0-9 ]/, "", MSG)
97         cmd = "fortune " extra " " (MSG ? "-m '" MSG "'" : "-s")
98         while (cmd | getline _fortune && lines < 5) {
99                 say(_fortune)
100                 lines++
101         }
102         close(cmd)
103         next
104 }
105
106 # Noise
107 FROM ~ OWNER && /^go go gadget woop/ {
108         for (i=20; i>0; i--)
109                 say(".delay " i " seconds; .woop " i)
110 }
111
112 TO == NICK && DST ~ /^#/ {
113         #say("Hello, " FROM)
114 }
115
116 !(FROM in bots) &&
117 MSG !~ /^\./ &&
118 /\<awk\>/ {
119         say("Awk, awk, awk! I'm a bird!")
120 }
121
122 /^\.help/ {
123         reply("Nothing can help you now..")
124 }
125
126 /Ho.*Ho.*Ho/ {
127         say("\00309Merry \00304Christmas!")
128 }
129
130 { fflush("") }
131
132 # vim: ft=awk