Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use strict;
- use warnings;
- use diagnostics;
- # On utilise la librairie Net::IRC pour se connecter à IRC
- use Net::IRC;
- # Vous utiliserez peut-être Data::Dumper pour le debug, pour savoir de quoi sont composés certains événements...
- # use Data::Dumper;
- # Configuration des options de connexion (serveur, login) :
- my $server = 'irc.epiknet.net';
- my $nick = 'LovelyBot'; # A configurer !
- my $pass = 'missddd'; # A configurer !
- # Informations concernant le Bot :
- my $ircname = 'Bot IRC Perl';
- my $username = 'perlBot';
- my $version = '2.0';
- # Channel sur lequel on veut que le Bot aille :
- my $channel = '#fanclub_miss3d';
- # On crée l'objet qui nous permet de nous connecter à IRC :
- my $irc = new Net::IRC;
- # On crée l'objet de connexion à IRC :
- my $conn = $irc->newconn(
- 'Server' => $server,
- 'Port' => 6667,
- 'Nick' => $nick,
- 'Ircname' => $ircname,
- 'Username' => $username
- );
- # On installe les fonctions de Hook :
- $conn->add_handler('endofmotd', \&on_connect); # Fin du MOTD => on est connecté
- $conn->add_handler('public', \&on_public); # Sur le chan
- $conn->add_handler('notice', \&on_notice); # En notice
- $conn->add_handler('msg', \&on_private); # En privé
- $conn->add_handler('caction', \&on_caction); # /me
- $conn->add_handler('cversion', \&on_cversion); # Demande de version
- $conn->add_handler('cping', \&on_cping); # Demande de PING
- $conn->add_handler('ctime', \&on_ctime); # Demande de time
- # On lance la connexion et la boucle de gestion des événements :
- $irc->start();
- ## Les fonctions de gestion des événements :
- sub on_connect
- {
- my ($conn, $event) = @_;
- $conn->join($channel);
- $conn->privmsg($channel, 'Bien le bonjour :)');
- $conn->print("<$nick>\t| Bien le bonjour :)");
- $conn->{'connected'} = 1;
- $conn->privmsg('nickserv', 'IDENTIFY ' . $pass);
- $conn->print("Identify : $nick $pass");
- } # Fin on_connect
- sub on_public
- {
- my ($conn, $event) = @_;
- my $text = $event->{'args'}[0];
- my $pseudo = $event->nick;
- $conn->print("<" . $event->{'nick'} . ">\t| $text");
- if (substr($text, 0, 1) eq '!')
- { # $text commence par un '!' => il s'agit probablement d'une commande
- my $commande = ($text =~ m/^!([^ ]*)/)[0];
- if ($commande ne '')
- {
- if ($commande eq 'kiss')
- {
- my @params = grep {!/^\s*$/} split(/\s+/, substr($text, length("!$commande")));
- if (defined($params[0]) && $params[0] ne '')
- { # Un paramètre (non vide) a été passé à la commande
- # => On va pouvoir l'utiliser
- $conn->privmsg($channel, "$pseudo fait un énorme kiss à $params[0] !"); # Salutation sur le channel
- $conn->print("<$nick>\t| Bonjour $params[0] !"); # Et echo sur la console
- }
- else
- { # Un paramètre attendu n'a pas été fourni à la commande...
- $conn->print("Un paramètre attendu");
- }
- }
- if ($commande eq 'test')
- {
- my @params = grep {!/^\s*$/} split(/\s+/, substr($text, length("!$commande")));
- if (defined($params[0]) && $params[0] ne '')
- { # Un paramètre (non vide) a été passé à la commande
- # => On va pouvoir l'utiliser
- $conn->privmsg($channel, "$pseudo fait des TESTS sur le pseudo > $params[0] !"); # Salutation sur le channel
- $conn->print("<$nick>\t| Bonjour $params[0] !"); # Et echo sur la console
- }
- else
- { # Un paramètre attendu n'a pas été fourni à la commande...
- $conn->print("Un paramètre attendu");
- }
- }
- if ($commande eq 'coca')
- {
- my @params = grep {!/^\s*$/} split(/\s+/, substr($text, length("!$commande")));
- if (defined($params[0]) && $params[0] ne '')
- { # Un paramètre (non vide) a été passé à la commande
- # => On va pouvoir l'utiliser
- $conn->privmsg($channel, "$pseudo offre un coca à $params[0] :)"); # Salutation sur le channel
- $conn->print("<$nick>\t| Bonjour $params[0] !"); # Et echo sur la console
- }
- else
- { # Un paramètre attendu n'a pas été fourni à la commande...
- $conn->print("Un paramètre attendu");
- }
- }
- if ($commande eq 'relou')
- {
- my @params = grep {!/^\s*$/} split(/\s+/, substr($text, length("!$commande")));
- if (defined($params[0]) && $params[0] ne '')
- { # Un paramètre (non vide) a été passé à la commande
- # => On va pouvoir l'utiliser
- $conn->privmsg($channel, "$pseudo trouve que $params[0] commence à être relou"); # Salutation sur le channel
- $conn->print("<$nick>\t| Bonjour $params[0] !"); # Et echo sur la console
- }
- else
- { # Un paramètre attendu n'a pas été fourni à la commande...
- $conn->print("Un paramètre attendu");
- }
- }
- else
- { # La commande n'a pas été reconnue...
- $conn->print("Commande non reconnue");
- }
- }
- else
- { # On avait un ! en début de ligne, mais non suivi d'un nom de commande
- $conn->print("Pas une commande");
- }
- }
- } # Fin on_public
- sub on_notice
- {
- my ($conn, $event) = @_;
- my $text = $event->{'args'}[0];
- $conn->print("NOTICE<" . $event->nick() . ">\t| $text");
- } # Fin on_notice
- sub on_private
- {
- my ($conn, $event) = @_;
- my $text = $event->{'args'}[0];
- $conn->print("PRIVE<" . $event->nick() . ">\t| $text");
- } # Fin on_private
- sub on_caction
- {
- my ($conn, $event) = @_;
- my $nick = $event->nick;
- my $text = $event->{'args'}[0];
- $conn->print("* $nick $text");
- } # Fin on_caction
- sub on_cversion
- {
- my ($conn, $event) = @_;
- my $nick = $event->nick;
- $conn->ctcp_reply($nick, 'VERSION ' . "BotaGabou");
- $conn->print("*** CTCP VERSION request de $nick");
- } # Fin on_cversion
- sub on_cping
- {
- my ($conn, $event) = @_;
- my $nick = $event->nick;
- my $timestamp = $event->{'args'}[0];
- $conn->ctcp_reply($nick, 'PING ' . $timestamp);
- $conn->print("*** CTCP PING request de $nick");
- } # Fin on_cping
- sub on_ctime
- {
- my ($conn, $event) = @_;
- my $date = localtime;
- my $nick = $event->nick;
- $conn->ctcp_reply($nick, 'TIME ' . $date);
- $conn->print("*** CTCP TIME request de $nick");
- } # Fin on_ctime
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement