#!/usr/bin/perl
use strict;
use warnings;
use Net::IRC;
use HTTP::Request::Common;
use LWP::UserAgent;
use XML::Simple;
#use Data::Dumper;
my $server = '';
my $nick = 'kikoubot';
my $ircname = 'b0t';
my $username = 'BoT';
my $version = '1.0';
my $channel = '';
#irc object
my $irc = new Net::IRC;
# On crée l'objet de connexion à IRC :
my $sock = $irc->newconn(
'SSL' => 1,
'Server' => $server,
'Port' => 7001,
'Nick' => $nick,
'Ircname' => $ircname,
'Username' => $username
) or die "Connetion refused\n";
$sock->add_handler('379', \&on_connect); # Fin du MOTD => on est connecté
$sock->add_handler('public', \&on_public); # Sur le chan
$sock->add_handler('msg', \&on_private); # En privé
$sock->add_handler('cversion', \&on_cversion); # Demande de version
# On lance la connexion et la boucle de gestion des événements :
$irc->start() or die "can't start\n";
sub on_private
{
my ($sock, $event) = @_;
my $text = $event->{'args'}[0];
print "debug private\n";
print $sock "PRIVMSG $event->nick() :a poil !\r\n";
$sock->print("PRIVE<" . $event->nick() . "> $text");
}
sub on_connect
{
my ($sock, $event) = @_;
print "debug connect\n";
$sock->join($channel);
$sock->{'connected'} = 1;
}
sub get_infos
{
my ($sock) = @_;
my $ua = new LWP::UserAgent;
my $req = new HTTP::Request GET => "http://www.derkeiler.com/News/rss.xml";
my $res = $ua->request($req);
my $xml = new XML::Simple;
my $data = $xml->XMLin($res->content);
for (my $i = 0; $i < 5; $i++) {
$sock->privmsg($channel,
"NEWS : [" . $data->{'channel'}->{'item'}->[$i]->{'description'} ."] [" . $data->{'channel'}->{'item'}->[$i]->{'link'} ."]");
}
}
sub on_public
{
my ($sock, $event) = @_;
my $text = $event->{'args'}[0];
if (substr($text, 0, 1) eq '!') {
my $command = ($text =~ m/^!([^ ]*)/)[0];
if ($command ne '') {
if ($command eq 'infos') {
get_infos($sock);
}
else {
$sock->privmsg($channel, "a poil " . $event->nick());
}
}
}
if ($text =~ $nick) {
$sock->privmsg($channel, "a poil ". $event->nick());
}
}