1 bot pour l'irc avec socket!

Contenu du snippet

Le code d'un bot que j'ai codé rapidement, j'ai pas commenté mais je suis sur que vous allez comprendre(code simple), et puis si vous avec un probleme contacter moi a ggreg4@laposte.net ou sur #php (irc: chat1.voila.fr Pseudo: PsY4). sinon ne marche pas sous des serveurs du style de multimania pour cause de fonction désactivé.

J'en est refait une meilleur version, pour ceux que ca intéraisse mailler moi!

http://xtrem.tuxfamily.org/rfc1459fr.html <- les Protocoles irc en francais (ils peuvent toujours servir O_o )!

Source / Exemple :


<? 
set_time_limit(0); 
$serv="chat1.voila.fr"; 
echo "connect to $serv...<br>"; 
$fp=fsockopen("$serv","6667"); 
echo "Ident...<br>"; 
fputs($fp,"user PsY4 UNIX ggreg4@laposte.net PHP_BOT\n"); 
$mennick="ev-a[PsY4_BoT_PhP]"; 
fputs($fp,"nick $mennick\n"); 
sleep(1); 

while($new=fgets($fp,1024)){ 
$new = str_replace("\r", "", $new); 
$new = str_replace("\n", "", $new); 

// :ServBoT!p@boss PRIVMSG #php :.ds #kaya salut 
$tab_temp0=explode(":",$new); 
$msg_void=$tab_temp0[0]; //ping 
$msg_info=$tab_temp0[1]; //ServBoT!p@boss PRIVMSG #php 
$msg_user=$tab_temp0[2]; //.ds #kaya salut ca va 
$msg_void1=$tab_temp0[3]; //.ds #kaya salut ca va 

// .ds #kaya salut 
$tab_temp1=explode(" ",$msg_user); 
$msg_user_param0=$tab_temp1[0]; //.ds 
$msg_user_param1=$tab_temp1[1]; //#kaya 
$nbtt=count($tab_temp1); 
$nbtt--; 
for($i=2;$i<=$nbtt;$i++){ 
$msg_user_param2.=$tab_temp1[$i]." "; //salut ca va 
} 

// ServBoT!p@boss PRIVMSG #php 
$tab_temp2=explode("!",$msg_info); 
$msg_info_nick=$tab_temp2[0]; //ServBoT 

// ServBoT!p@boss PRIVMSG #php 
$tab_temp3=explode(" ",$msg_info); 
$msg_info_host=$tab_temp3[0]; //ServBoT!p@boss 
$msg_info_type=$tab_temp3[1]; //PRIVMSG 
$msg_info_target=$tab_temp3[2]; //#php 

// ServBoT!p@boss PRIVMSG #php 
$tab_temp4=explode("!",$msg_info_host); 
$msg_info_host_auth=$tab_temp4[1]; //p@boss 

echo "$new <br>"; 

if(eregi("PING",$tab_temp0[0])){ 
fputs($fp,"PONG $serv\n"); 
echo "<font color=red>PING? PONG!</font><br>"; 
} 
//Si le pseudo exsiste deja 
if($msg_info_type=="433"){ 
$randnick++; 
$mennick.=$randnick; 
fputs($fp,"nick $mennick\n"); 
} 

if($msg_info_type=="JOIN"){ 
if($msgj==1){fputs($fp,"PRIVMSG $msg_user_param0 : Bienvenu $msg_info_nick sur $msg_user_param0\n"); } 
} 

if($msg_info_type=="PRIVMSG"){ 
$timz=time(); 
if(eregi(".jall",$msg_user_param0)){ 
fputs($fp,"join #php\n"); 
fputs($fp,"join #programmation\n"); 
fputs($fp,"join #testing\n"); 
} 
elseif(eregi(".time",$msg_user_param0) && $timeflood<=$timz){ 
fputs($fp,"PRIVMSG $msg_info_target :Current time : ".date("Y-m-d h:i:s")."\n"); 
$timeflood=time()+5; 
} 
elseif(eregi(".nick",$msg_user_param0) && $authing==$msg_info_host_auth){ 
fputs($fp,"nick $msg_user_param1\n"); 
$mennick=$msg_user_param1; 
} 
elseif(eregi(".msgj",$msg_user_param0) && $authing==$msg_info_host_auth){ 
if($msgj==1){$msgj=0;fputs($fp,"PRIVMSG $msg_info_target :MSG Join off\n");}else{$msgj=1;fputs($fp,"PRIVMSG $msg_info_target :MSG join on\n");} 
} 
elseif(eregi(".ilist",$msg_user_param0)){ 
fputs($fp,"PRIVMSG $msg_info_target :[-AUTH-] $authing\n"); 
} 
elseif(eregi(".kill",$msg_user_param0) && $authing==$msg_info_host_auth){ 
fputs($fp,"quit $msg_user_param1 $msg_user_param2\n"); 
} 
elseif(eregi(".kchan",$msg_user_param0) && $authing==$msg_info_host_auth){ 
fputs($fp,"part $msg_user_param1 $msg_user_param2\n"); 
} 
elseif(eregi(".up",$msg_user_param0) && $authing==$msg_info_host_auth){ 
fputs($fp,"MODE $msg_info_target +o $msg_user_param1\n"); 
} 
elseif(eregi(".v",$msg_user_param0) && $authing==$msg_info_host_auth){ 
fputs($fp,"MODE $msg_info_target +v $msg_user_param1\n"); 
} 
elseif(eregi(".dv",$msg_user_param0) && $authing==$msg_info_host_auth){ 
fputs($fp,"MODE $msg_info_target -v $msg_user_param1\n"); 
} 
elseif(eregi(".inv",$msg_user_param0) && $authing==$msg_info_host_auth){ 
fputs($fp,"invite $msg_user_param1 $msg_user_param2\n"); 
} 
elseif(eregi(".down",$msg_user_param0) && $authing==$msg_info_host_auth){ 
fputs($fp,"MODE $msg_info_target -o $msg_user_param1\n"); 
} 
elseif(eregi(".fuck",$msg_user_param0) && $authing==$msg_info_host_auth){ 
fputs($fp,"KICK $msg_info_target $msg_user_param1 :$msg_user_param2\n"); 
} 
elseif(eregi(".hop",$msg_user_param0) && $authing==$msg_info_host_auth){ 
fputs($fp,"part $msg_info_target\n"); 
sleep(1); 
fputs($fp,"join $msg_info_target\n"); 
} 
elseif(eregi(".ds",$msg_user_param0) && $authing==$msg_info_host_auth){ 
fputs($fp,"PRIVMSG $msg_user_param1 :$msg_user_param2\n"); 
} 
elseif(eregi(".join",$msg_user_param0) && $authing==$msg_info_host_auth){ 
fputs($fp,"join $msg_user_param1\n"); 
} 
elseif(eregi(".f",$msg_user_param0) && $authing==$msg_info_host_auth){ 
fputs($fp,"$msg_user_param1 $msg_user_param2\n"); 
} 
elseif(eregi("auth",$msg_user_param0)){ 
if(eregi("admin",$msg_user_param1) && eregi("pass",$msg_user_param2)){ 
fputs($fp,"PRIVMSG $msg_info_target :GooD Password!!!!\n"); 
$authing=$msg_info_host_auth; 
}else{ 
fputs($fp,"PRIVMSG $msg_info_target :Bad Password!!!!\n"); 
} 
$aution=1; 
} 
elseif(eregi(".deident",$msg_user_param0) && $authing==$msg_info_host_auth){ 
$authing="none"; 
} 
elseif(eregi(".targetpv",$msg_user_param0) && $authing==$msg_info_host_auth){ 
$targpv="$msg_user_param1"; 
} 
elseif(eregi(".targetsal",$msg_user_param0) && $authing==$msg_info_host_auth){ 
$targsal="$msg_user_param1"; 
} 
elseif(eregi(".untargetpv",$msg_user_param0) && $authing==$msg_info_host_auth){ 
unset($targpv); 
} 
elseif(eregi(".untargetsal",$msg_user_param0) && $authing==$msg_info_host_auth){ 
unset($targsal); 
} 
elseif(eregi(".killsock",$msg_user_param0)){ 
fputs($fp,"quit $msg_user_param1 $msg_user_param2\n"); 
} 

if(!eregi("#",$msg_info_target) && isset($targpv) && $aution!=1){ 
fputs($fp,"PRIVMSG $targpv :$msg_info_nick > $msg_user \n"); 
} 
if(eregi("#",$msg_info_target) && isset($targsal) && $aution!=1){ 
fputs($fp,"PRIVMSG $targsal :$msg_info_nick > $msg_user \n"); 
} 
} 

unset($aution); 
unset($tab_temp0); 
unset($tab_temp1); 
unset($tab_temp2); 
unset($tab_temp3); 
unset($msg_user_param2); 
}
?>

Conclusion :


Note: Si vos commandes ne marche pas c'est peut etre à cose de vos couleurs!

Sinon:
http://www.devforum.fr.fm (forum)
http://xtrem.tuxfamily.org/posesource.php (échanger vos sources sur irc)
http://www.liquid.fr.fm (site en construction)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.