Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use strict;
- use warnings;
- # On utilise la librairie Net::IRC pour se connecter à IRC
- use Net::IRC;
- # On load les commandes
- our %commands = ();
- require "commands.pl";
- # Configuration des options de connexion (serveur, login) :
- our $server = 'irc.epiknet.org';
- our $nickBot = 'TwilightSparkle';
- # Informations concernant le Bot :
- our $ircname = 'TwilightSparkle';
- our $username = 'TwilightSparkle';
- our $pass = 'MDP';
- our $version = '1.0';
- our $locked = "false";
- # Channel sur lequel on veut que le Bot aille :
- #our $channel = '#test_bot';
- our $channel = '#lpp';
- # On crée l'objet qui nous permet de nous connecter à IRC :
- our $irc = new Net::IRC;
- # On crée l'objet de connexion à IRC :
- our $conn = $irc->newconn(
- 'Server' => $server,
- 'Port' => 6667,
- 'Nick' => $nickBot,
- 'Ircname' => $ircname,
- 'Username' => $username
- );
- # On installe les fonctions de Hook :
- $conn->add_handler('376', \&on_connect); # Fin du MOTD => on est connecté
- $conn->add_handler('public', \&on_public); # Sur le chan
- $conn->add_handler('msg', \&on_private); # En privé
- $conn->add_handler('kick', \&on_kick); # En cas de kick
- # On lance la connexion et la boucle de gestion des événements :
- $irc->start();
- sub on_connect
- {
- my ($conn, $event) = @_;
- $conn->privmsg('nickserv', 'IDENTIFY ' . $pass);
- $conn->join($channel);
- $conn->{'connected'} = 1;
- } # Fin on_connect
- sub on_public
- {
- my ($conn, $event) = @_;
- my $text = $event->{'args'}[0];
- $conn->print($event->{'to'}[0] . " : <" . $event->{'nick'} . "> : $text");
- parse_command($conn, $event, "false");
- } # Fin on_public
- sub on_private
- {
- my ($conn, $event) = @_;
- my $text = $event->{'args'}[0];
- $conn->print("Private : <" . $event->nick() . "> : $text");
- parse_command($conn, $event, "true");
- } # Fin on_private
- sub on_kick {
- my ($conn, $event) = @_;
- if($event->nick() eq $nickBot)
- {
- return;
- }
- my @kicks = (
- "Pourquoi toute cette haine ? Les poneys ne font-ils donc pas la paix ? Tu ne respectes pas les valeurs de MLP !",
- "OH MY GOSHHHHHHH ! Aurais tu oublié les fondements même de MLP qui promouvoit la paix !?",
- "Tu sais que je t'aime toi <3",
- "Owwwwiiiii !",
- "Tu ne m'aimes plus :( ? Pourtant moi je t'aime ! <3",
- "C'est ta façon de me complimenter ? Si c'est le cas, merci c'est trop gentil, fallait pas !",
- "Ah ben non ça marche pas ! Loupé !",
- "Arrètes :( ! C'est ache qui est maso, pas moi ..."
- );
- if($nickBot eq $event->{'to'}[0])
- {
- $conn->join($event->{'args'}[0]);
- $conn->privmsg($event->{'args'}[0], $event->nick() . ' : ' . $kicks[int(rand(scalar(@kicks)))]);
- }
- } # Fin on_kick
- sub parse_command
- {
- my ($conn, $event, $prive) = @_;
- my $text = $event->{'args'}[0];
- my $nick = $event->{'nick'};
- if (substr($text, 0, 1) eq '!')
- {
- my $commande = ($text =~ m/^!([^ ]*)/)[0];
- if ($commande ne '' && ($locked ne "true" || $commande eq "unlock"))
- {
- my @params = grep {!/^\s*$/} split(/\s+/, substr($text, length("!$commande")));
- if (defined($commands{$commande}))
- {
- if(defined($commands{$commande}{'private'}))
- {
- unless($commands{$commande}{'private'} eq $prive || $commands{$commande}{'private'} eq "false")
- {
- return "false";
- }
- }
- if(defined($commands{$commande}{'users'}))
- {
- my $users = join(' ', $commands{$commande}{'users'});
- unless ($users =~ /(^| )$nick( |$)/) {
- $conn->privmsg($event->{'to'}[0], "Vous n'avez pas honte de me demander ça ! Seul Celestia peut me le demander !");
- return "false";
- }
- }
- my $chan = $event->{'to'}[0];
- if($prive eq "true")
- {
- if(defined($params[0]) && $params[0] =~ /^#\w/)
- {
- $chan = shift(@params);
- }
- else
- {
- $chan = $channel;
- }
- }
- $commands{$commande}{'function'}($conn, $chan, $nick, $text, @params);
- return "true";
- }
- }
- }
- return "false";
- } # Fin parse_command
Add Comment
Please, Sign In to add comment