N'abend.
Ich bin vor paar Tagen durch zufall auf Perl gestoßen und bin gleich auch ein wenig begeistert, und hab mich nun drangesetzt einen kleinen IRC Bot damit zu schreiben.
In erster Linie soll er erstmal nur zum Server connecten, einen Channel joinen und da idlen ^^
Hier mein bisheriger Code:
#!/usr/bin/perl
use IO::Socket;
use Switch;
use Digest::MD5 qw(md5_hex);
$server = 'irc.chaoz-irc.org';
$port = '6667';
$user = 'wangbot wangbot wangbot wangbot';
$nick = 'wangbot';
$channel = '#wang';
$channelpasswd = 'china';
$owner = 'Wang';
$passwd = '';
$conn = IO::Socket::INET->new(PeerAddr=>$server, PeerPort=>$port, Proto=>'tcp', Timeout=>'30' || print 'ERROR: Couldn\'t establish a connection to '.$server.".\n";
print $conn 'USER '.$user.'\r\n';
print $conn 'NICK '.$nick.'\r\n';
print $conn 'JOIN '.$channel.' '.$channelpasswd.'\r\n';
while ($datain = <$conn> {
## show data in the cmd
print $datain;
# log Data
if ($datain =~ m/\privmsg $channel/) {
open(CHANLOG,'>>'.$channel.'.log';
print CHANLOG "$datain";
close (CHANLOG);
} else {
open(CHANLOG,'>>'.$server.'.log';
print CHANLOG "$datain";
close (CHANLOG);
}
# ping.... pong!
if ($datain =~ m/^PING (.*?)$/gi) {
print $conn 'PONG '.$1.'\n';
}
}
So..
Also eigentlich sollte er nun Connecten => Channel joinen..
Aber iwie klappt das net:
C:\Documents and Settings\Test\Desktop>perl ircbot1.pl
:Ascofun.Chaoz-IRC.org NOTICE AUTH :*** Looking up your hostname...
:Ascofun.Chaoz-IRC.org NOTICE AUTH :*** Found your hostname (cached)
:Ascofun.Chaoz-IRC.org NOTICE AUTH :*** Checking ident...
:Ascofun.Chaoz-IRC.org NOTICE AUTH :*** No ident response; username prefixed wit
h ~
ERROR :Closing Link: [85.181.77.137] (Ping timeout)
Er hängt bei "No ident response; username prefixed with ~"
und nach ner Zeit kommt der Error
Weiß jemand Rat?
Edit:
Hab den Fehler: '\r\n' => "\r\n"