Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/06/2004, 14:35
Avatar de kesthers
kesthers
 
Fecha de Ingreso: mayo-2004
Ubicación: Valencia
Mensajes: 358
Antigüedad: 22 años, 5 meses
Puntos: 2
Muy bien, pues aquí lo teneis:

Código PHP:
<?
// Datos del Bot
$nickname = "KesBot";
$powered = "Kesthers";
$nombre = "KesBot";
$version = "v1.0";

$ircserver[address] = "irc.quakenet.org";
$ircserver[port] = "6667";

$red = "quakenet";

$directorio[stats] = "/var/log/kesbot/quakenet/";

// Conexion a Base de Datos
mysql_connect("localhost", "xxxxx", "xxxxx"); mysql_select_db("xxxxx");

## Funciones de Logs & Stats ##
function WriteLogs($canal, $mensaje) {
    global 
$directorio;
    
$fp = @fopen($directorio[stats].str_replace("#", "", str_replace(":", "", $canal)).".log", "a");
    
fputs($fp, $mensaje."\r\n");
    
fclose($fp);
}

// Conectamos
set_time_limit(0);
for(
$conn=0; 1<=2; $conn++) {
    echo
"Conectando...\n";
    
$conexion = fsockopen($ircserver[address], $ircserver[port]);
    
socket_set_timeout($conexion, 31536000);
    if(
$conexion) {
        echo
"Esperando respuesta...\n";
        
$bucle=0; $conectado=0; $limit=0;
        
set_time_limit(0);
        while (
$read = fgets($conexion,512)) {
            
set_time_limit(0);
            
$read = str_replace("\n","",$read);
            
$read = str_replace("\r","",$read);
            
$array = explode(" ",$read);
            
$address = explode("!",$array[0]);
            
$nick = str_replace(":","",$address[0]);
            
$quit = substr($read, strlen($array[0])+strlen($array[1])+3, 512);
            
$modo = substr($read, strlen($array[0])+strlen($array[1])+strlen($array[2])+3, 512);
            
$mensaje = substr($read, strlen($array[0])+strlen($array[1])+strlen($array[2])+4, 512);
            
$kick = substr($read, strlen($array[0])+strlen($array[1])+strlen($array[2])+strlen($array[3])+5, 512);

            if (
$conectado!==0) {
                switch (
$array[1]) {
                    case 
PRIVMSG:
                    if(
$array[2]!==$nickname) {
                        if(
substr($mensaje, 0, 7)=="ACTION") {
                            
$count = strlen($mensaje)-9;
                            
WriteLogs($array[2], "[".date("H:i")."] * ".$nick." ".substr($mensaje, 8, $count));
                        } else {
                            
WriteLogs($array[2], "[".date("H:i")."] <".$nick."> ".$mensaje);
                        }
                    } else {
                        
$orden = explode(" ", strtolower($mensaje));
                        switch (
$orden[0]) {
                            case 
"ping":
                            
fputs($conexion, "NOTICE ".$nick." :PING ".$orden[1]."\n");
                            break;
                            
                            case 
"version":
                            
fputs($conexion, "NOTICE ".$nick." :VERSION ".$version."\n");
                            break;
                            
                            case 
"time":
                            
fputs($conexion, "NOTICE ".$nick." :TIME ".date("D M d H:i:s Y")."\n");
                            break;
                            
                            case 
"finger":
                            
fputs($conexion, "NOTICE ".$nick." :FINGER ".$nombre."\n");
                            break;

                            case 
admin:
                            if(
mysql_num_rows(mysql_query("SELECT * FROM admins WHERE nick='".strtolower($nick)."'"))==1) {
                                
$accion = substr($mensaje, 6, 512);
                                
fputs($conexion, $accion."\n");
                                if(
$orden[1]=="nick") {
                                    
$nuevo = explode(":", $orden[2]);
                                    
$nickname = $nuevo[0];
                                }
                            } else {
                                
fputs($conexion, "PRIVMSG ".$nick." :\002\0032No estas autorizado/da a usar este comando.\n");
                            }
                            break;

                            case 
info:
                            
fputs($conexion, "PRIVMSG ".$nick." :\002\0032Bot de Logs & Stats [Creado por: ".$powered."]\n");
                            
fputs($conexion, "PRIVMSG ".$nick." :\002\0032Website: http://www.kesthers.com\n");
                            
fputs($conexion, "PRIVMSG ".$nick." :\002\0032E-Mail: [email][email protected][/email]\n");
                            break;

                            case 
op:
                            if(
mysql_num_rows(mysql_query("SELECT * FROM opers WHERE nick='".$orden[1]."' AND password='".$orden[2]."' AND red='".$red."' AND canal='".$orden[3]."'"))=="1") {
                                
fputs($conexion, "MODE ".$orden[3]." +o ".$nick."\n");
                            } else {
                                
fputs($conexion, "PRIVMSG ".$nick." :\002\0032No te puedo dar op porque los datos no son correctos\n");
                            }
                            break;
                        }
                    }
                    break;
                    
                    case 
NOTICE:
                    if(
$array[2]!==$nickname) {
                        
WriteLogs($array[2], "[".date("H:i")."] *** ".$mensaje." (".$nick.")");
                    }
                    break;
                    
                    case 
NICK:
                    
$query = mysql_query("SELECT * FROM online WHERE nick='".$nick."' AND red='".$red."'");
                    while(
$sql = mysql_fetch_array($query)) {
                        
WriteLogs($sql[canal], "[".date("H:i")."] *** ".$nick." is now known as ".str_replace(":", "", $array[2]));
                    }
                    
mysql_query("UPDATE online SET nick='".str_replace(":", "", $array[2])."' WHERE nick='".$nick."' AND red='".$red."'");
                    break;

                    case 
MODE:
                    if(
$array[2]!==$nickname) {
                        
WriteLogs($array[2], "[".date("H:i")."] *** ".$nick." sets mode: ".$modo);
                    }
                    break;

                    case 
JOIN:
                    
WriteLogs($array[2], "[".date("H:i")."] *** ".$nick." (".$address[1].") has joined ".str_replace(":", "", $array[2]));
                    
mysql_query("INSERT INTO online (time, nick, canal, red) VALUES ('".time()."', '".$nick."', '".str_replace(":", "", $array[2])."', '".$red."');");
                    break;

                    case 
PART:
                    
WriteLogs($array[2], "[".date("H:i")."] *** ".$nick." (".$address[1].") has left ".$array[2]);
                    
mysql_query("DELETE FROM online WHERE nick='".$nick."' AND canal='".$array[2]."' AND red='".$red."'");
                    break;

                    case 
KICK:
                    if(
$array[3]==$nickname) {
                        
fputs($conexion, "JOIN ".$array[2]."\n");
                    }
                    
WriteLogs($array[2], "[".date("H:i")."] *** ".$array[3]." was kicked by ".$nick." (".$kick.")");
                    
mysql_query("DELETE FROM online WHERE nick='".$array[3]."' AND canal='".$array[2]."' AND red='".$red."'");
                    break;

                    case 
QUIT:
                    
$query = mysql_query("SELECT * FROM online WHERE nick='".$nick."' AND red='".$red."'");
                    while(
$sql = mysql_fetch_array($query)) {
                        
WriteLogs($sql[canal], "[".date("H:i")."] *** ".$nick." (".$address[1].") Quit (".$quit.")");
                    }
                    
mysql_query("DELETE FROM online WHERE nick='".$nick."' AND red='".$red."'");
                    break;

                    case 
TOPIC:
                    
WriteLogs($array[2], "[".date("H:i")."] *** ".$nick." changes topic to '".$mensaje."'");
                    
mysql_query("UPDATE canales SET topic='".$mensaje."' WHERE canal='".$array[2]."' AND red='".$red."'");
                    break;
                }
            }


            if (
$bucle==0) {
                
fputs($conexion, "NICK $nickname\n\n");
                
fputs($conexion, "USER $nickname $powered $powered :$nombre $version\n\n");
                echo
"Identificado.\n";
            }

            if (
$array[0]=="PING") {
                
fputs($conexion, "PONG ".str_replace(":","",$array[1])."\n");
            }

            if (
$array[1]==251) {
                
$query = mysql_query("SELECT * FROM canales WHERE red='".$red."'");
                while(
$sql = mysql_fetch_array($query)) {
                    
$canales .= $sql[canal].",";
                }
                
fputs($conexion, "JOIN ".$canales."\n\n");
                echo
"Entrada en canales. ($canales)\n";
                
$conectado++;
            }

            
$bucle++;
        }
    } else {
        echo
"Error al Conectar.\n";
    }
    echo
"Desconectado.\n";
}
?>