Hallo miteinander!
Ich versuche mich an 'nem IRCBot in PERL mit einer MySQL-Anbindung.
Der Bot sollte folgende Aufgaben erfüllen:
Verbindung zur DB herstellen
Wert in "reg" suchen:
Wenn reg=0
Sonst: nichts
Jede Minute soll der Befehl ausgeführt werden (Wert 0 suchen)
Datenbank: irc_test
Code:
IRCBot:
Ich wäre Euch sehr dankbar für Eure Hilfe!
Gruss
Beastie
Ich versuche mich an 'nem IRCBot in PERL mit einer MySQL-Anbindung.
Der Bot sollte folgende Aufgaben erfüllen:
Verbindung zur DB herstellen
Wert in "reg" suchen:
Wenn reg=0
Code:
/nick $nickname
/msg nickserv register $passwd $email
Sonst: nichts
Jede Minute soll der Befehl ausgeführt werden (Wert 0 suchen)
Datenbank: irc_test
Code:
Code:
CREATE TABLE `mitglieder` (
`id` int(11) NOT NULL auto_increment,
`nickname` varchar(30),
`passwd` varchar(20),
`email` varchar(35),
`reg` varchar(1) default NULL,
PRIMARY KEY (`id`)
) TYPE=ISAM PACK_KEYS=1;
IRCBot:
Code:
#!/usr/bin/perl -w
use Net::IRC;
use strict;
use Mysql;
### mySQL auth ######################
my $dbhost = "127.0.0.1";
my $dbuser = "root";
my $dbpwd = "";
my $dbname = "irc_test";
## GLOBAL ###########################
my $dbh = Mysql->connect($dbhost, $dbname, $dbuser, $dbpwd);
if($dbh) {print "Connecting to MySQL server success\n";}
else {print "MySQL probleme\n";}
my $irc = new Net::IRC;
my $conn = $irc->newconn(
Server => shift || '127.0.0.2',
Port => shift || '6668',
Nick => 'TestBot',
Ircname => 'IRC Services Management',
Username => 'management'
);
$conn->{opernickpw} = shift || 'S3rvBot';
$conn->{channel} = shift || '#irc.management';
sub on_connect {
my $conn = shift;
$conn->oper($conn->{opernickpw}, 'test');
$conn->join($conn->{channel});
$conn->privmsg($conn->{channel}, 'test');
$conn->privmsg('NickServ', 'identify TestBot test');
}
sub mysql_get{
my ($self, $event) = @_;
my $query = "SELECT COUNT(*) FROM nickreg WHERE reg='0'";
$dbh->query($query);
$conn->nick($dbh->{nickname});
$conn->privmsg('NickServ', 'register', $dbh->{passwd}, $dbh->{email});
}
sub on_notice {
my ($conn, $event) = @_;
if (
($event->{nick} eq 'NickServ') and
($event->{args}[0] eq 'If you do not change within one minute, I will change your nick.')
) {
# send an /msg to NickServ with the password
$conn->privmsg('NickServ', 'identify test');
on_connect($conn);
}
}
sub on_disconnect {
my ($self, $event) = @_;
$self->connect();
print "Disconnected from ", $event->from(), " (",
($event->args())[0], "). Attempting to reconnect...\n";
}
# add handlers for our standard events
$conn->add_handler('notice', \&on_notice);
$conn->add_handler('376', \&on_connect);
$conn->add_global_handler('disconnect', \&on_disconnect);
$conn->add_handler('cping', \&mysql_get);
# start IRC
$irc->start;
Ich wäre Euch sehr dankbar für Eure Hilfe!
Gruss
Beastie
Zuletzt bearbeitet: