te lo pongo aquí porque supera los 10000 caracteres
Código PHP:
<?php
//Conectamos con la db
$con=mysql_connect("91.121.3.112","RCbot", "xxxx");
mysql_select_db("RCbot",$con);
//Sacamos datos de bots
$RObots=mysql_query("select * FROM RObots WHERE Estado=1 order by Nick",$con);
$DBot = mysql_fetch_array($RObots);
if(mysql_num_rows(mysql_query("SELECT * FROM RObots WHERE Estado=1" ))==0) { die("Ningun Bot Libre ;)"); }
//Configuramos los datos del servidor
$bnick="".$DBot['Nick']."";
$bpass ="".$DBot['Pass']."";
print($bnick);
$Consulta=mysql_query("select * FROM Canales WHERE Bot='".$bnick."' order by Canal asc",$con);
$canales[0][0] = "";
while($Canal = mysql_fetch_array($Consulta)) {
$canales[$Canal['Canal']][0] = $Canal['fijo'];
$canales[$Canal['Canal']][1] = $Canal['variable'];
}
$conexion = fsockopen("paix.irc-hispano.org", 6667);
//Sacamos Los Canales Del Bot
$CanalesBot=mysql_query("select * FROM Canales WHERE Bot='".$bnick."'",$con);
$autojoin = "";
$c = 0;
while($DCanales = mysql_fetch_array($CanalesBot)) {
$autojoin[$c] = $DCanales['Canal'];
$c++;
}
$autojoin = implode(",",$autojoin);
$mnick = "^SainT^";
//Leemos los admins y los metemos en un array
$c=0;
$NAdmins[0]= "";
$Admins=mysql_query("select * FROM Admins",$con);
while($DAdmins = mysql_fetch_array($Admins)) {
$NAdmins[$c] = $DAdmins['Nick'];
$c++;
}
$open = fopen("log.txt","w+"); //siempre es bueno tener un log de las conversaciones :)
// Identificamos al bot
fputs($conexion, "USER ".$bnick." - - :[RC]Stats Estadisticas para tus canales\n");
fputs($conexion, "NICK ".$bnick.":".$bpass." -\r\n");
//Guardamos en un log todo lo que pasa en el servidor
// Aremos un loop infinito mientras este conectado al servidor.
while (!feof($conexion)) {
$bmsg = str_replace("\n", "", str_replace("\r", "", fgets ($conexion,2048)));
fwrite($open, "$bmsg");
fwrite($open, "\n\n");
$comando = explode(" ",$bmsg);
$read = str_replace("\n","",$bmsg);
$read = str_replace("\r","",$read);
$array = explode(" ",$read);
$n = explode("!",$comando[0]);
$nick = str_replace(":","",$n[0]);
// Resiviremos los mensajes del servidor.
// Al enviarnos el PING responderemos con PONG.. (Dudas, aprende protocolo IRC)
if ($comando[0] == 'PING') {
fputs($conexion,'PONG '.str_replace(':','',$comando[1])."\n");
// Si el el primer ping entraremos a los canales. (Este ping lo hace cuando se conecto.)
if(!$bconnect) {
// El script no se acabara nunca omenos que se caiga.
set_time_limit(0);
fputs($conexion,"JOIN ".$autojoin."\n");
$bconnect=1;
mysql_query("UPDATE RObots SET Estado=2 WHERE Nick='".$bnick."' limit 1");
}
}
//Saca el nick
$buscar = explode("!",$comando[0]);
$Nickuser = str_replace(":","",$buscar[0]);
//para que no repitan los comandos//
$timer = time() - $respuesta[$Nickuser];
if($timer > 0) {
//escribimo todo en un log
// el } fin comandos de admin
if ($Nickuser == "[RC]Bot" AND $comando[2] == $bnick) {
if($comando[3] == ":!Entra") {
if($comando[4]) {fputs($conexion,"JOIN :".$comando[4]."\n"); } else {
fputs($conexion, "PRIVMSG ".$comando[2]." :debes ponerme un canal donde entrar\n");
}
}
}
if(mysql_num_rows(mysql_query("SELECT * FROM Admins WHERE Nick='".$Nickuser."'"))==1) {
//Empezamos con los comandos por privado
//el [3] es la 1º palabra
if ($comando[2] == $bnick) {
switch ($comando[3]) {
//si el comadno es !exit
case ":!quit":
case ":!Quit":
case ":!exit":
case ":!Exit":
case ":!Desconecta":
case ":!desconecta":
$quit = "[RC]Bot - Visitame en http://www.saint-rc.es";
fputs($conexion,"QUIT :$quit\n");
mysql_query("UPDATE RObots SET Estado=1 WHERE Nick='".$bnick."' limit 1");
break;
}
}
//los } } de arriba finalizan el if y el switch
}
if(mysql_num_rows(mysql_query("SELECT * FROM Canales WHERE Canal='".$comando[2]."'" ))==1) {
//para usarios
switch ($comando[3]) {
case ":!stats":
$query=mysql_query("SELECT * FROM Nicks WHERE nick='".$Nickuser."' AND Canal='".$comando[2]."'");
$Duser = mysql_fetch_array($query);
$color = "\x02\x033";
fputs($conexion,"PRIVMSG $comando[2] : ".$canales[$comando[2]][1]."".$Nickuser." ".$canales[$comando[2]][0]."Llevas".$canales[$comando[2]][1]." ".$Duser['Lineas']." ".$canales[$comando[2]][0]."lineas escritas,".$canales[$comando[2]][1]." ".$Duser['Palabras']." ".$canales[$comando[2]][0]."palabras escritas,".$canales[$comando[2]][1]." ".$Duser['Letras']." ".$canales[$comando[2]][0]."letras escritas \n");
$respuesta[$Nickuser] = time()+2;
break;
case ":!lineas":
$query=mysql_query("SELECT * FROM Nicks WHERE nick='".$Nickuser."' AND Canal='".$comando[2]."'");
$Duser = mysql_fetch_array($query);
fputs($conexion,"PRIVMSG $comando[2] :".$canales[$comando[2]][1]."".$Nickuser." ".$canales[$comando[2]][0]."Llevas".$canales[$comando[2]][1]." ".$Duser['Lineas']." ".$canales[$comando[2]][0]."Lineas\n");
$respuesta[$Nickuser] = time()+2;
break;
case ":!letras":
}
}
//lo de arriba cierra el timer
$comando[2] = str_replace(":","",$comando[2]);
if (eregi("#",$comando[2]) AND eregi(":",$comando[2]) == 0 AND !eregi("@",$Nickuser)) {
//cuando escriben los users
if(mysql_num_rows(mysql_query("SELECT * FROM NickProhibidos WHERE Nick='".$Nickuser."'"))==0 AND $Nickuser != "" AND $Nickuser != " " ) {
if(mysql_num_rows(mysql_query("SELECT * FROM Nicks WHERE nick='".$Nickuser."' AND Canal='".$comando[2]."'" ))==1) {
$texto = array_slice($comando,3);
$texto = implode(" ", $texto);
$palabras = sizeof(explode(" ", $texto));
$letras = strlen($texto);
mysql_query("UPDATE Nicks SET Lineas=Lineas+1, Palabras=Palabras+".$palabras.", Letras=Letras+".$letras." WHERE nick='".$Nickuser."' AND Canal='".$comando[2]."' limit 1");
} else {
$texto = array_slice($comando,3);
$texto = implode(" ", $texto);
$palabras = sizeof(explode(" ", $texto));
$letras = strlen($texto);
mysql_query("INSERT INTO Nicks (Nick, Canal, Lineas, Letras, Palabras) VALUES ('".$Nickuser."', '".$comando[2]."', '1', '".$letras."', '".$palabras."');");
}
if(mysql_num_rows(mysql_query("SELECT * FROM Canales WHERE Canal='".$comando[2]."'" ))==1) {
$query=mysql_query("SELECT SUM(Lineas) as LCanal FROM Nicks WHERE Canal='".$comando[2]."'");
$DCanalillo = mysql_fetch_array($query);
$Lcanal = $DCanalillo['LCanal'];
mysql_query("UPDATE Canales SET Lineas='".$Lcanal."' WHERE Canal='".$comando[2]."' limit 1");
}
//Fin Nicks
//Comienza Frases
$Frase = array_slice($comando,3);
$Frase = implode(" ", $Frase);
$Frase = substr ($Frase, 1);
if(mysql_num_rows(mysql_query("SELECT * FROM Frases WHERE nick='".$Nickuser."' AND Canal='".$comando[2]."' AND Frase='".$Frase."'" ))==1) {
mysql_query("UPDATE Frases SET veces=veces+1 WHERE nick='".$Nickuser."' AND Canal='".$comando[2]."' AND Frase='".$Frase."' limit 1");
} else {
mysql_query("INSERT INTO Frases (Nick, Canal, Frase) VALUES ('".$Nickuser."', '".$comando[2]."', '".$Frase."');");
}
}
//Termina lo de nickuser != ""... } de arriba
//Finaliza lode # el de abajo
}
//empezamos join,part y esas cosas.
switch ($array[1]) {
case "JOIN":
fputs($conexion,"WHO :$comando[2]\n"); //ejemplo !Say Texto (el bot dira Texto)
if ($cojiendonicks == "0") { $userscanal = ""; }
$cojiendonicks = "1";
//para actualizar los nicks
if(mysql_num_rows(mysql_query("SELECT * FROM Nicks WHERE nick='".$Nickuser."' AND Canal='".$comando[2]."'" ))==1) {
mysql_query("UPDATE Nicks SET entradas=entradas+1 WHERE nick='".$Nickuser."' AND Canal='".$comando[2]."' limit 1");
} else {
mysql_query("INSERT INTO Nicks (Nick, Canal, entradas) VALUES ('".$Nickuser."', '".$comando[2]."', '1');");
}
break;
}
//Finaliza si esta en el canal
}
}
// Al no estar conectado al servidor ejecutara este commando que desconectara el socket y terminara el script.
fclose($conexion);
exit();
?>