1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
use strict;
use warnings;
use diagnostics;
use IO::Socket;
use IO::Socket::INET;
my $server = shift || 'irc.rizon.net';
my $port = shift || 6667;
my $user = 'I r teh NeenBot';
my $nick = shift || 'NeenBot';
my $chan = shift || '#blobot';
my $upass = 'rea34floz';
our $crlf = "\015\012";
our $nickname;
our $text;
our $conn = IO::Socket::INET->new(
PeerAddr => $server,
PeerPort => $port,
Proto => 'tcp',
Timeout => '30'
) || die "$_";
sendcmd("USER $user $user $user $user");
sendcmd("NICK $nick");
sendcmd("PRIVMSG NickServ :IDENTIFY rea34floz");
$b = 0;
while (<$conn>) {
my ($nick, $chan, $text);
sendcmd("PONG $1") if /^PING (.*)$/;
if ($b == 0 && /376/) {
sendcmd("JOIN $chan");
$b = 1;
}
to_shell($nick, $chan, $text) if ($nick, $chan, $text) = (/^:(.*?)\!.*?@.*? PRIVMSG (.*) :(.*)/);
join_chan($2, $1) if /^:(.*?)\!.*?@.*? PRIVMSG $chan :!join (.*)/;
say($3, $4) if /^:(.*?)\!.*?@.*? PRIVMSG $chan :!say (.*) #(.*)/;
act($3, $4) if /^:(.*?)\!.*?@.*? PRIVMSG $chan :!act (.*) #(.*)/;
killbot("Domon") if /^:Domon\!.*?@.*? PRIVMSG $chan :\@die/;
killbot("neen") if /^:neen\!.*?@.*? PRIVMSG $chan :\@die/;
raw($3, $4) if /^:(.*?)\!.*?@.*? PRIVMSG $chan :!raw (.*)/;
print "$_" unless /^:(.*?)\!.*?@.*? PRIVMSG $chan :!act (.*) #(.*)/;
}
sub to_shell {
my ($nick, $text) = @_;
print "$chan; $nick said: $text\n";
}
sub join_chan {
my ($channel,$nick) = @_;
sendcmd("PRIVMSG $chan Joining $channel, $nick!");
sendcmd("JOIN $channel");
print "Joining $channel\n";
}
sub say {
my ($msg, $channel) = @_;
sendcmd("PRIVMSG $channel $msg");
}
sub killbot {
my ($nick) = @_;
sendcmd("PRIVMSG $chan Goodbye");
print "Die command received from $nick. Goodbye.\n";
sendcmd("QUIT");
}
sub sendcmd {
my ($cmd) = @_;
print $conn "$cmd$crlf"
}
|