Using perl Syntax Highlighting
- #!/usr/bin/perl
- # Codeado por Firos - Staff
- use strict;
- use warnings;
- #####DATOS#####
- my $servidor = 'irc.freenode.net';
- my $puerto = "6667";
- my $nick = "robot";
- my $admin = "jferrero";
- my $sn00py = "robot";
- my $canales = "#perlenespanol";
- my $comandos = "Los comandos actualmente disponibles son: !kick, !ban, !unban, !voice, !devoice, !quit, !part, !join, !commands, !op, !deop. Para poder utilizarlos has de tener privilegios sobre el bot.";
- ###############
- use IO::Socket;
- my $socket = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$servidor", PeerPort => "$puerto") || print "Imposible conectar.\n";
- &IRCSend ("NICK $sn00py");
- &IRCSend ("USER la madre que lotrajo");
- my $conectado = 1;
- while(my $conexion = <$socket>)
- {
- print $conexion;
- if ($conexion=~/PING :/)
- {
- &IRCSend ("PONG $'");
- $conectado = 1;
- }
- if ($conectado == 1)
- {
- ######### Entrar a canales #########
- if ($conexion=~/001/)
- {
- sleep 2;
- my @canales = split(/:/ , $canales);
- for(my $i = 0; $i < @canales; $i++)
- {
- print "Entrando en $canales[$i]\n";
- &JOIN("$canales[$i]");
- }
- $conectado = 2;
- }
- }
- if ($conectado == 2)
- {
- ######### Aqui empieza la identificacion/ejecución de comandos ###########
- if ($conexion =~ /^\:(\S*)!(\S*)@(\S*)\s(\S*)\s(\S*)\s:(\S*)\s(.*)/)
- {
- my $quien = $1; my $comandoserv = $4; my $donde = $5; my $comando = $6; my $patron = $7;
- ######### Comandos de canal ########
- if ($quien eq $admin)
- {
- if ($comando eq "!commands") { PRIVMSG("$donde" , $comandos); }
- elsif ($comando eq "!op") { &IRCSend("MODE $donde +o $patron"); }
- elsif ($comando eq "!deop") { &IRCSend("MODE $donde -o $patron"); }
- elsif ($comando eq "!join") { &IRCSend("JOIN :$patron"); }
- elsif ($comando eq "!quit") { &IRCSend("QUIT :$patron"); }
- elsif ($comando eq "!kick") { &IRCSend("KICK $donde :$patron"); }
- elsif ($comando eq "!ban") { &IRCSend("MODE $donde +b :$patron"); }
- elsif ($comando eq "!unban") { &IRCSend("MODE $donde -b :$patron"); }
- elsif ($comando eq "!voice") { &IRCSend("MODE $donde +v :$patron"); }
- elsif ($comando eq "!devoice") { &IRCSend("MODE $donde -v :$patron"); }
- elsif ($comando eq "!part") { &IRCSend("PART $donde :$patron"); }
- }
- }
- ######## Lectura/ejecución por query #########
- if ($conexion =~ /^\:(\S*)!(\S*)@(\S*)\sPRIVMSG\s$sn00py\s\:(\S*)\s(\S*)\s(.*)/)
- {
- my $quien = $1; my $comando = $4; my $canal = $5; my $patron = $6;
- if ($admin eq $quien)
- {
- if ($comando eq "!MSG") {IRCSend("PRIVMSG $canal :$patron"); }
- }
- }
- ######## Rejoin #########
- if ($conexion =~ /^\:(\S*)!(\S*)@(\S*)\s(\S*)\s(\S*)\s(\S*)\s:(.*)/)
- {
- my $quien = $1; my $comandserv = $4; my $donde = $5; my $aquien = $6;
- if ($comandserv eq "KICK") { &JOIN ("$donde"); }
- }
- }
- ######## Random NICK #########
- if ($conexion=~/^\:(\S*)\s433\s(.*)\s$sn00py(.*)/)
- {
- $sn00py .= int(rand(999));
- &IRCSend ("NICK :$sn00py");
- $conectado = 1;
- }
- }
- ####### Subrutinas ########
- sub IRCSend { print $socket "$_[0]\n"; }
- sub JOIN { IRCSend("JOIN $_[0]\n"); }
- sub PRIVMSG { IRCSend ("PRIVMSG $_[0] :$_[1]"); }
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4