#!/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()); } }