- File
ircbasics.pisc
— part of check-in
[8eb7e557c3]
at
2017-05-04 04:17:29
on branch trunk
— Split the ping/pong server into ircbasics, started work on irckit to allow for basic evented servers
(user:
yumaikas
Artifact 40ff8ca3998d3add735a426d14e54caede5e1876:
1
2 : handle-ping ( conn message -- was-ping )
3 :msg :conn
4 $msg "PING" str-contains :was-ping
5 $was-ping [
6 $msg " " str-split 1 vec-at :resp-key
7 ${ "PONG :" $resp-key } :resp
8 $resp $conn .send-message
9 ] when
10 $was-ping
11 ;
12
13 : irc-pong-server! ( addr -- )
14 :addr
15 "Before trying to connect" println
16 $addr irc-dial :conn
17
18 /* Get the server MOTD and the like */
19 "PASS 0" $conn .send-message
20 "NICK piscbot" $conn .send-message
21 $conn dup .recieve-message handle-ping
22 "USER piscbot piscbot i :piscbot" $conn .send-message
23 $conn dup .recieve-message handle-ping
24
25 t :reading-motd
26 [ $reading-motd ] [
27 $conn .recieve-message :msg
28 $msg println
29 /* Waiting for a MODE command so we know that MOTD has been finished */
30 $msg "MODE" str-contains not :reading-motd
31 ] while
32
33 "JOIN #botwars" $conn .send-message
34
35 [ t ] [
36 "Awaiting a message" println
37 $conn .recieve-message :msg
38 $msg println
39 [
40
41 $conn $msg handle-ping not [
42 $msg println
43 $msg "!ping" str-contains [
44 "PRIVMSG #botwars :pong!" $conn .send-message
45 ] when
46 ] when
47 ] time println
48 ] while
49 $conn .close
50 ;
51
52 : freenode-pong-server ( -- ) "irc.freenode.com:6667" irc-pong-server! ;
53 : afternet-pong-server ( -- ) "irc.afternet.org:6667" irc-pong-server! ;