Some funny IRC bot written in PHP :-)
[mirrors/Programs.git] / php / Harvester / irc_bot.php
1 <?php
2 //HARVESTER IRC BOT
3 //by: Harvie 2oo7
4
5 //Settings:
6 $server = "irc.2600.net";
7 $port = "6667";
8 $channel = "#soom";
9 $nick = "Harvester";
10 $jokefile = "jokes.txt";
11
12 //Functions:
13 function irc_connect( $fp, $nick, $channel, $joinwait ) {
14 fwrite($fp, "USER USER $nick # # :$nick\n");
15 fwrite($fp, "NICK $nick\n");
16 sleep($joinwait);
17 fwrite($fp, "JOIN $channel\n");
18 }
19
20 function irc_say( $fp, $msg, $nick, $rcpto ) {
21 //fwrite($fp, ":$nick!~Harvie@r3ax157.net.upc.cz PRIVMSG $rcpto :$msg\n");
22 fwrite($fp, ": PRIVMSG $rcpto :$msg\n");
23 }
24
25 //Code:
26 $jokes = file($jokefile);
27 $sfp = fsockopen ($server, $port, &$errno, &$errstr, 5);
28 irc_connect( $sfp, $nick, $channel, 0 );
29
30 $home_channel = $channel;
31
32 while(!fwrite($sfp, "")) {
33
34 fwrite($sfp, "JOIN $channel\n");
35
36 //ReadLine from IRC Server
37 $line = (fgets($sfp));
38 echo($line);
39
40 //IRC Sever PING/PONG Response
41 $words = (explode(" ", $line));
42 if ($words[0] == "PING") {
43 fwrite($sfp, "PONG ".trim($words[1])."\n");
44 echo("-PONG ".trim($words[1])."\n");
45 }
46
47 //Prijem pozvanky
48 if ( ( trim($words[1]) == "INVITE" ) && ( substr(trim($words[3]), 0, 2) == ":#" ) ) {
49 $channel = substr(trim($words[3]), 1);
50 fwrite($sfp, "JOIN $channel\n");
51 irc_say( $sfp, "Hello", $nick, $channel );
52 echo("-JOINED $channel\n");
53 }
54
55 $commands = (explode(":", $line));
56
57 //Harvester - Posle vizitku
58 if ( trim($commands[2]) == "Harvester") {
59 irc_say( $sfp, ("Ahoj lidi, ja jsem Harvieho bot. Random#: ".rand(0,10)), $nick, $channel );
60 echo("-VISITCARD"."\n");
61 }
62
63 //hhelp - vypise tuto napovedu
64 if ( trim($commands[2]) == "hhelp") {
65 irc_say( $sfp, "Ja jsem Harvester - vice info na: http://ircbot.wz.cz/", $nick, $channel );
66 /*
67 irc_say( $sfp, "Harvester - Posle vizitku", $nick, $channel );
68 irc_say( $sfp, "hhelp - vypise tuto napovedu", $nick, $channel );
69 irc_say( $sfp, "hsay:Message - Posle zpravu", $nick, $channel );
70 irc_say( $sfp, "hpsay:to:Message - Posle soukromou zpravu kanalu nebo osobe", $nick, $channel );
71 irc_say( $sfp, "hdo:Command - Posle serveru prikaz", $nick, $channel );
72 irc_say( $sfp, "hmove:Channel - Pripoji do kanalu / Zmeni aktivni kanal", $nick, $channel );
73 irc_say( $sfp, "/invite Harvester #channel - Pozve a pripoji bota do kanalu", $nick, $channel );
74 irc_say( $sfp, "hpart:Channel - Odpoji se z kanalu", $nick, $channel );
75 irc_say( $sfp, "hjoke - Posle \"nahodny\" vtip", $nick, $channel );
76 */
77 echo("-HELPED"."\n");
78 }
79
80 //hsay:Message - Posle zpravu
81 if ( trim($commands[2]) == "hsay") {
82 irc_say( $sfp, trim($commands[3]), $nick, $channel );
83 echo("-SAID: ".trim($commands[3])."\n");
84 }
85
86 //hpsay:to:Message - Posle soukromou zpravu kanalu nebo osobe
87 if ( trim($commands[2]) == "hpsay") {
88 irc_say( $sfp, trim($commands[4]), $nick, trim($commands[3]) );
89 echo("-SAID: ".trim($commands[4])." -- To: ".trim($commands[3])."\n");
90 }
91
92 //hcol:to:Message - Posle kolizni zpravu kanalu nebo osobe
93 if ( trim($commands[2]) == "hcol") {
94 irc_say( $sfp, trim($commands[4]), trim($commands[3]), $channel );
95 echo("-COLIDED: ".trim($commands[4])." To: ".trim($commands[3])."\n");
96 }
97
98 //hdo:Command - Posle serveru prikaz
99 if ( trim($commands[2]) == "hdo") {
100 $hdo = explode("hdo:", $line);
101 fwrite( $sfp, trim($hdo[1])."\n" );
102 echo("-DONE: ".trim($hdo[1])."\n");
103 }
104
105 //hpart:Channel - Odpoji se z kanalu
106 if ( trim($commands[2]) == "hpart") {
107 $hdo = explode("hpart:", $line);
108 if ( trim($hdo[1]) != trim($home_channel) ) {
109 fwrite( $sfp, "PART :".trim($hdo[1])."\n" );
110 echo("-PARTED: ".trim($hdo[1])."\n");
111 }
112 }
113
114 //hmove:Channel - Zmeni aktivni kanal
115 if ( trim($commands[2]) == "hmove") {
116 $hdo = explode("hmove:", $line);
117 if ( trim($hdo[1]) != trim($home_channel) ) {
118 $home_channel = trim($hdo[1]);
119 fwrite($sfp, "JOIN $home_channel\n");
120 irc_say( $sfp, "Hi, im here...", $nick, $home_channel );
121 echo("-ACTIVATED: ".trim($hdo[1])."\n");
122 }
123 }
124
125 //htime - udaje o casu
126 if ( trim($commands[2]) == "htime") {
127 $msg = implode("-", getdate(time()));
128 irc_say( $sfp, trim($msg), $nick, $channel );
129 echo("-TIMED"."\n");
130 }
131
132 //hjoke - Posle nahodny vtip
133 if ( trim($commands[2]) == "hjoke") {
134 $joke = ($jokes[ rand(0, (sizeof($jokes)-1) ) ]);
135 //$ftip = "Potkaji se dve blondyny a jedna rika te druhe: \"How do you do?\" a ta ji odpovi co? kde ses to naucila? To vis vzdycky pretocim radio doprava a tam mluvi jen anglicky tak se to tak ucim. Potkaji se za 2 tydny a jedna rika druhe How do you do a druha ji odpovi chsrchsrsrshchsrshchs";
136 irc_say( $sfp, trim($joke), $nick, $channel );
137 echo("-JOKED"."\n");
138 }
139
140 //Navrat do domaciho kanalu
141 $channel = $home_channel;
142
143 }
144
145 echo("-Connection lost.")
146
147 ?>
This page took 0.397237 seconds and 4 git commands to generate.