IRCBot + MySQL (Perl)

Beastie

Grünschnabel
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

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:
Zurück