All pastes #675814 Raw Edit

Anonymous

public text v1 · immutable
#675814 ·published 2007-08-30 14:33 UTC
rendered paste body
#!/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());
    }
}