Foros del Web » Programando para Internet » PHP »

Problema con un bot de irc

Estas en el tema de Problema con un bot de irc en el foro de PHP en Foros del Web. Estoy haciendo un bot de irc tiene muchas funciones pero tengo un problema estoy tratando de hacer que interprete los comandos escritos en una base ...
  #1 (permalink)  
Antiguo 02/03/2011, 13:49
 
Fecha de Ingreso: octubre-2010
Mensajes: 83
Antigüedad: 13 años, 5 meses
Puntos: 1
Problema con un bot de irc

Estoy haciendo un bot de irc
tiene muchas funciones
pero tengo un problema
estoy tratando de hacer que interprete los comandos escritos en una base de datos,
hay tres columnas id, cmd (comando), rta (respuesta)
le saque muchos comandos porque no me entraba en el post

aca esta el bot
Código PHP:
<?php
 
 
set_time_limit
(0);
ini_set('display_errors''on');
 
/* --- Varibles and Config Info --- */
 
$config = array(
        
'server' => 'irc.toribash.com',
        
'port'   => 6667,
        
'name'   => 'Kozbot',
        
'nick'   => 'Kozzy',
       
       
        
'channel' => '#koz',
                
'channel2' => '#latin',              
        
'logging' => false,
            
'warning' => false,
);
 
 
/* --- IRCBot Class --- */
 
class IRCBot {
 

        var 
$socket;
 

        var 
$ex = array();    

 
 
        function 
__construct($config)
        {
                
$this->socket fsockopen($config['server'], $config['port']);
                
$this->login($config);
                
$this->main($config);
        }
 

 
        function 
login($config)
        {
                
$this->send_data('USER'$config['nick'].' KozEnko '.$config['nick'].' :'.$config['name']);
                
$this->send_data('NICK'$config['nick']);
                                
$this->send_data('NICKSERV'' identify ******');
                                
$this->join_channel($config['channel']);
                                                                
$this->join_channel($config['channel2']);
                                if(
$config['logging']) {
                        
$date date("n-j-y");
                        
$time date('h:i:s A');
                        
$logfile fopen("$date-log.html","a");
                        
fwrite($logfile,"<br/>**************** Logging Started at $time ****************<br/>");
                        
fclose($logfile);
                               

                         if(
$config['warning']) {
                                        
$this->send_data('PRIVMSG '.$config['channel'].' :'"Chat Logging has been [Enabled]");
                                }
                 }
        }
 

 
function 
main($config)
        {            
                
$data fgets($this->socket256);
               
                echo 
nl2br($data);
                               
                
flush();
 
                
$this->ex explode(' '$data);
                                
$mensaje_base strstr($data':');
                                
$mensaje_basee substr($mensaje_base1);
                                
$mensajee strstr($mensaje_basee':');
                                
$mensaje substr($mensajee1);
                                               
                if(
$this->ex[0] == 'PING')
                {
                        
$this->send_data('PONG'$this->ex[0]); //Plays ping-pong with the server to stay connected.
                                                
}
               
                if(
$config['logging'])
                {
                        
$logtxt $this->filter_log($this->ex[1], $this->ex[2], $this->ex[0], $this->get_msg($this->ex)); //Gets human readable text from irc data
                        
if($logtxt != null) { //Writes to log if it is a message
                                
$date date("n-j-y");
                                
$logfile fopen("$date-log.html","a");
                                
fwrite($logfile,"$logtxt<br />");
                                
fclose($logfile);      
                        }
                }
        
$command str_replace(array(chr(10), chr(13)), ''$this->ex[3])." ".$this->ex[0];
        switch(
$command) {
                       case 
':!pegar '.$this->ex[0]:
                                
$msg "";
                for(
$i=4$i <= (count($this->ex)); $i++) { $msg .= $this->ex[$i]." "; }
                
$this->send_data('PRIVMSG'$this->ex[2]." :\x01ACTION le pega en la cara a ".$msg." tan fuerte que le rompe la nariz");
                break;
            case 
':!matar '.$this->ex[0]:
                                
$msg "";
                for(
$i=4$i <= (count($this->ex)); $i++) { $msg .= $this->ex[$i]." "; }
                
$this->send_data('PRIVMSG'$this->ex[2]." :\x01ACTION le pega un tiro a ".$msg);
                break;
            case 
':!odiar'.$this->ex[0]:
                                
$msg "";
                for(
$i=4$i <= (count($this->ex)); $i++) { $msg .= $this->ex[$i]." "; }
                
$this->send_data('PRIVMSG'$this->ex[2]." :\x01ACTION odia a ".$msg);
                break;
            case 
':!amar '.$this->ex[0]:
                            
$msg "";
                for(
$i=4$i <= (count($this->ex)); $i++) { $msg .= $this->ex[$i]." "; }
                
$this->send_data('PRIVMSG'$this->ex[2]." :\x01ACTION ama a ".$msg);
                break;
            case 
':!fail '.$this->ex[0]:
                                
$msg "";
                for(
$i=4$i <= (count($this->ex)); $i++) { $msg .= $this->ex[$i]." "; }
                
$this->send_data('PRIVMSG'$this->ex[2]." :\x01ACTION eres un fail ".$msg);
                break;
            case 
':!fag '.$this->ex[0]:
                                
$msg "";
                for(
$i=4$i <= (count($this->ex)); $i++) { $msg .= $this->ex[$i]." "; }
                
$this->send_data('PRIVMSG'$this->ex[2]." :\x01ACTION eres un puto fag ".$msg."!");
                break;
            case 
':!morder '.$this->ex[0]:
                                
$msg "";
                for(
$i=4$i <= (count($this->ex)); $i++) { $msg .= $this->ex[$i]." "; }
                
$this->send_data('PRIVMSG'$this->ex[2]." :\x01ACTION le muerde el culo a ".$msg."!");
                break;
            case 
':!epic '.$this->ex[0]:
                                
$msg "";
                for(
$i=4$i <= (count($this->ex)); $i++) { $msg .= $this->ex[$i]." "; }
                
$this->send_data('PRIVMSG'$this->ex[2]." eres epic ".$msg."!");
                break;
            case 
':!lol '.$this->ex[0]:
                                
$msg "";
                for(
$i=4$i <= (count($this->ex)); $i++) { $msg .= $this->ex[$i]." "; }
                
$this->send_data('PRIVMSG'$this->ex[2]." se le rie en la cara a ".$msg."!");
                break;
            case 
':!escupir '.$this->ex[0]:
                                
$msg "";
                for(
$i=4$i <= (count($this->ex)); $i++) { $msg .= $this->ex[$i]." "; }
                
$this->send_data('PRIVMSG'$this->ex[2]." :\x01ACTION le encaja un terrible garzo en la cara a ".$mensaje."!");
                break;
            case 
':!chupar '.$this->ex[0]:
                                
$msg "";
                for(
$i=4$i <= (count($this->ex)); $i++) { $msg .= $this->ex[$i]." "; }
                
$this->send_data('PRIVMSG'$this->ex[2]." Hacelo vos!");
                break;
//enseñar
            
case ':Kozzy= '.$this->ex[0]:
                            
$dataa "";
                for(
$i=4$i <= (count($this->ex)); $i++) { $dataa .= $this->ex[$i]." "; }
                
$cmd strstr($dataa'|'true);
                                
$answer_base strstr($dataa'|');
                                
$answer substr($answer_base1);
                               
                                
$link mysql_connect('localhost''root');
if (!
$link) {
    die(
'Not connected : ' mysql_error());
}
 
$db_selected mysql_select_db('kozzy'$link);
            
$sql4 "INSERT INTO `Kozzy`(`cmd`,`rta`) VALUES ('".$cmd."','".$answer."')";
            
$res4 mysql_query($sql4) or die(mysql_error());
                                
$this->send_data('PRIVMSG'$this->ex[2]." done");
                                break;
 
 
            
}
        
$this->main($config);
    }
 
    
/* --- IRCBot Class's Functions --- */
 
function txt2bin($str) {
      
$text_array explode("\r\n"chunk_split($str1));
      for (
$n 0$n count($text_array) - 1$n++) {
        
$newstring .= substr("0000".base_convert(ord($text_array[$n]), 102), -8);
      }
      return 
$newstring;
    }
    function 
filter_log($type$chan$nick$msg) {
        
$nick ltrim($nick":");
        
$nick substr($nick0strpos($nick"!"));
        
$msg ltrim($msg":");
 
        if(
$type == "PRIVMSG") {
            return 
date("[H:i]")." &lt;".$nick."&gt; ".$msg;
        }
        return 
null     ;
    }
 
    function 
get_msg($n) {
        
$message "";
        for(
$i=$n$i <= (count($this->ex)); $i++) { $message .= $this->ex[$i]." "; }
        return 
$message;
    }
 
    function 
send_data($cmd$msg null) {
        if(
$msg != null) {
            
fputs($this->socket$cmd.' '.$msg."\r\n");
            echo 
'<strong>'.$cmd.' '.$msg.'</strong><br />';
        } else {
            
fputs($this->socket$cmd."\r\n");
            echo 
'<strong>'.$cmd.'</strong><br />';
        }
    }
 
        function 
join_channel($channel) {
        
$this->send_data('JOIN'$channel);
    }
 
function 
evall ($msg){
        
$this->send_data('PRIVMSG'$this->ex[2].' :'.eval($msg));}
 
 function 
ban_user($chan "#DAT"$user "Koz"$ban true) {
        if(
$ban) { $this->send_data('MODE'$chan.' +b '.$user);
        } else { 
$this->send_data('MODE'$chan.' -b '.$user); }
    }
 
 function 
kick_user($chan "#DAT"$user "Koz") {
        
$this->send_data('KICK ' $chan$user);
}
 
 
function 
build($offset) {
          
$out "";
        for(
$i=($offset); $i<=(count($this->ex)-1); $i++) {
            
$out $out.$this->ex[$i]." ";
        }
        return 
$out;
    }
 
}
$bot = new IRCBot($config);
?>
  #2 (permalink)  
Antiguo 02/03/2011, 13:52
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Problema con un bot de irc

Cita:
pero tengo un problema
y el problema?... no lo escribiste
  #3 (permalink)  
Antiguo 02/03/2011, 13:56
 
Fecha de Ingreso: octubre-2010
Mensajes: 83
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con un bot de irc

Cita:
estoy tratando de hacer que interprete los comandos escritos en una base de datos,
  #4 (permalink)  
Antiguo 02/03/2011, 15:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problema con un bot de irc

¿y el problema?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 03/03/2011, 13:16
 
Fecha de Ingreso: octubre-2010
Mensajes: 83
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con un bot de irc

es que no logro hacer que interprete una base de datos y que responda corresponda con el comando
No logro hacer que checkee consntatemente lo que recive ($command) y los compare con los guardados en la base de datos y envie la respuesta

Etiquetas: bot, irc
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:49.