Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use strict;
- use IO::Socket;
- ################################################################
- # Prueba perl de botIRC #
- # Objetivo del proyecto aprender manejo de perl con algunas #
- # de sus funciones y sobre todo sockets xD... #
- # #
- # Agradecimientos Guia de perl forever (Doddy), foro de perl #
- # en español (perlenespanol.com), kike, y google :D #
- ################################################################
- #by Kid_Goth
- # Declaracion de constantes #
- my $svr = "ifg.ircnode.com"; # Direccion del servidor
- my $nck = "practi_b0t"; # Nick del bot
- my $usu = "practi_b0t"; # Nombre del bot
- my $chn = "#hackxcrack"; # Canal al que conectara el bot
- my $prt = 6667; # Puerto al que conectara, normalmente 6667 pero tambien contamos
- # con 7001, 7002, 7003 y el 6697 (para conexiones seguras)
- my $clv = ""; # Clave
- my @users = ('kid_goth', 'Alan','JAG',
- 'E|3V1L'); # Usuarios con acceso al bot
- my @prgs; # Hash que tendra preguntas respuestas xD...
- my $trvAct = 0;
- my $preg = "";
- my $resp = "";
- my $cont = 0;
- my $pist = "";
- my $ent = 0; # Verificar entrada al canal
- my $op = 0; # Channel operator :D
- #-----------------------------------------------------------#
- if(@ARGV[0] ne "")
- {
- $chn = "#".@ARGV[0];
- }
- if(@ARGV[1] ne "")
- {
- $nck = @ARGV[1];
- $usu = @ARGV[1];
- }
- my $sck = new IO::Socket::INET(PeerAddr => $svr, PeerPort => $prt, Proto => 'tcp') or die "\nMe la suda xD\n";
- if(!$sck)
- {
- print "\nLa repout xD... hubo error\n";
- exit 1;
- }
- else
- {
- print "\nawwwwwwwwwwww yeeeeeaaaaaaaaahhhhhh!!!!\n";
- }
- print "\nEsperando acceptacion...";
- my $cping = 0;
- sub trivia
- {
- my $arc = "preguntas.txt";
- open(PREG, $arc);
- @prgs = <PREG>;
- close PREG;
- }
- sub pregunta
- {
- my $pos = int(@prgs);
- my $pos = rand($pos);
- $preg = $prgs[$pos];
- $resp = substr($preg, (index($preg, "*") + 1));
- $preg = substr($preg, 0, index($preg, "*"));
- chomp $resp;
- $cont++;
- }
- sub pista
- {
- $pist = $resp;
- my @palab = split(/ /, $pist);
- my @punts;
- my $pal = 1;
- for my $pab(@palab){
- my $numP = length($pab);
- if($pal == 1)
- {
- $pab = substr($pab, 0, 1).(" _" x ($numP - 1));
- $pal = 0;
- }
- else
- {
- $pab = " _" . (" _" x ($numP - 1));
- }
- push @punts, $pab;
- }
- $pist = join(/ /, @punts);
- $pist = uc($pist);
- }
- sub about
- {
- print $sck "PRIVMSG $chn :En este canal se tratara los temas relacionados con\r\n";sleep(3);
- print $sck "PRIVMSG $chn :los proyectos para hxc auspiciados por Alan++\r\n";sleep(3);
- print $sck "PRIVMSG $chn :Los proyectos que hay de momento son:\r\n";sleep(3);
- print $sck "PRIVMSG $chn :Bot en bash (z0meed), sistema de preguntas seleccion multiple en C (JAG) y DB de malware en C, VB y PHP (blaqker),\r\n";sleep(3);
- print $sck "PRIVMSG $chn :Finalizacion proyecto faha (Bryan20)\r\n";sleep(3);
- print $sck "PRIVMSG $chn :Fin [[About]]\r\n";
- }
- while(my $rcv = <$sck>) # Recibir datos que envia el server
- {
- chop $rcv;
- print("\n\n".$rcv);
- my ($_nick, $_acc, $_can, $_men, $_num) = split(/ /, $rcv); # Separar los datos recibidos por el server y/o canal
- my ($_cmd, $_tex) = split(/ :/, $rcv); # Separar usuario con texto que envia
- $_nick = substr($_nick, 1, (index($_nick, "!")-1));
- if($rcv =~ /004/)
- {
- print "\nAceptado...";
- }
- elsif($rcv =~ /433/)
- {
- die "$nck ya esta en uso..."
- }
- elsif($rcv =~ /^PING(.*)$/i)
- {
- print $sck "PONG $1\r\n"; # Se reponde pong (y ahora si lo tengo claro xD)
- $cping = $cping + 1;
- if($cping == 100)
- {
- $cping = 0;
- }
- }
- elsif($rcv =~ /(376)/i)
- {
- print "\nAccediendo al canal...";
- print $sck "JOIN $chn\r\n";
- print "\nAdentro y saludando";
- print $sck "PRIVMSG $chn :Hola a todos, me extrañaron? \:P\r\n";
- $ent = 1;
- }
- elsif($rcv =~ /(403)/i)
- {
- die "\n\nEstas Baneado\n\n";
- }
- elsif($rcv =~ /$nck/i && ($rcv =~ /hi/i || $rcv =~ /hola/i))
- {
- if(($_nick ne "Global") && ($_nick ne "chat.us.IRCnode.c") && ($_nick ne "irc.fr"))
- {
- print $sck "PRIVMSG $chn :hi $_nick\r\n";
- }
- }
- elsif($rcv =~ /NOTICE AUTH/i)
- {
- print "\nEnviando datos...";
- print $sck "NICK $nck\r\n";
- print $sck "USER $usu 8 * :bien de bien\r\n";
- }
- elsif($rcv =~ /(MOTD)/i && $ent != 1)
- {
- print "\nAccediendo al canal...";
- print $sck "JOIN $chn\r\n";
- $ent = 1;
- print $sck "PRIVMSG $chn :Hola a todos, me estrañaron? \:P\r\n";
- }
- #------------------------------------------------- Acciones del server ---------------------------------------------------#
- my $acc = join(" ", $_acc, $_can, $_men);
- if($acc =~ /(KICK $chn $nck)/i)
- {
- print $sck "JOIN $chn\r\n";
- print $sck "PRIVMSG $chn :No me simpatizas $_nick :P\r\n";
- }
- elsif($acc =~ /(JOIN)/i)
- {
- if($_nick ne $nck)
- {
- print $sck "PRIVMSG $chn :hi $_nick, bienvenido al canal de $chn\r\n";
- }
- }
- elsif($_men =~ /(^:!trivia)/i)
- {
- if($_nick ~~ @users)
- {
- if($trvAct == 0)
- {
- &trivia;
- print $sck "PRIVMSG $chn :Modo trivia ACTIVADO para ver la pregunta actual escribe !pregact\r\n";sleep(3);
- print $sck "PRIVMSG $chn :para cambiar de pregunta !otra\r\n";sleep(3);
- print $sck "PRIVMSG $chn :para responder solo responde en minuscula\r\n";sleep(3);
- print $sck "PRIVMSG $chn :para desactivar el modo trivia !trivia\r\n";sleep(3);
- &pregunta;
- &pista;
- print $sck "PRIVMSG $chn :Pregunta \#$cont\: $preg \: $pist\r\n";
- #print $sck "PRIVMSG $chn :$resp;\r\n";
- $trvAct = 1;
- }
- else
- {
- print $sck "PRIVMSG $chn :Modo trivia DESACTIVADO\r\n";
- $trvAct = 0;
- $cont = 0;
- }
- }
- else
- {
- print $sck "PRIVMSG $chn :Access denied\r\n";
- }
- }
- elsif($_men =~ /(^:!about)/i)
- {
- if($_nick ~~ @users)
- {
- &about;
- }
- else
- {
- print $sck "PRIVMSG $chn :Access denied\r\n";
- }
- }
- elsif($_men =~ /(^:!op)/i)
- {
- if($_nick ~~ @users)
- {
- print $sck "MODE $chn +o $_nick\r\n";
- }
- }
- elsif($_men =~ /(^:!deop)/i)
- {
- if($_nick ~~ @users)
- {
- print $sck "MODE $chn -o $_nick\r\n";
- }
- }
- elsif($_men =~ /(^:!k)/i)
- {
- if($_nick ~~ @users)
- {
- if($_num ne $nck)
- {
- print $sck "KICK $chn $_num\r\n";
- }
- }
- }
- #------------------------------------------------- Datos de la trivia ---------------------------------------------------#
- if($trvAct eq 1)
- {
- if($_tex =~ /(^!pregact)/i)
- {
- print $sck "PRIVMSG $chn :Pregunta \#$cont\: $preg \: $pist\r\n";
- }
- elsif($_tex =~ /(^!otra)/i)
- {
- print $sck "PRIVMSG $chn :La respuesta era \: $resp\r\n";
- &pregunta;
- &pista;
- sleep(2);
- print $sck "PRIVMSG $chn :Pregunta \#$cont\: $preg \: $pist\r\n";
- }
- elsif($_tex =~ /($resp)/i)
- {
- my $_nuck = $_nick;
- print $sck "PRIVMSG $chn :Felicidades $_nuck la respuesta que diste es correcta... $resp\r\n";
- &pregunta;
- &pista;
- sleep(3);
- print $sck "PRIVMSG $chn :Pregunta \#$cont\: $preg \: $pist\r\n";
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment