1 bot pour l'irc avec socket!

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 021 fois - Téléchargée 27 fois

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

Ajouter un commentaire

Commentaires

marc1306
Messages postés
124
Date d'inscription
samedi 14 juin 2003
Statut
Membre
Dernière intervention
31 décembre 2009
-
Désolé je ne suivais pas ce log depuis un moment ,
un client irc en php pour apprendre ce qu'est une socket c'est intéressant mais.. dans la pratique tchater sur l'irc a partir d'un script php c'est qq même pas l'idéal.
à l'époque je voulais que le script php , enregistre quelqu'un sur un irc sans aucune commande a taper
et qu'un robot en face delete le nick si qqn l'avais déjà enregistré. bref plein de complications sans noms!
Je pense pour simplifier les codes php de type " socket "

il faudrai plutôt trouver une classe avec un moyen de gérer : les Questions / réponses du tcp/ip

si je reçoit telle info : je repond ça
si telle autre je répondre autre chose etc...

puisque là on se retrouve qq même avec pleins de lignes qui se ressembles.

ce qui reviendrai a creer une classe parlante ^^
marc1306
Messages postés
124
Date d'inscription
samedi 14 juin 2003
Statut
Membre
Dernière intervention
31 décembre 2009
-
merci bcp pour cette source vraiment super utile
par contre ça -->:
"J'en est refait une meilleur version, pour ceux que ca intéraisse mailler moi!"

ca fait bobo ^^
hm1ch
Messages postés
19
Date d'inscription
mercredi 10 juillet 2002
Statut
Membre
Dernière intervention
5 avril 2007
-
sa serait sympa de poster la modification ici que tout le monde en profite :)
Cordialement
thomasworms
Messages postés
12
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
20 juin 2006
-
Sa serai simpa s'il ne parté pas en " Ping Timeout " .
Sur ton bot le ping timeout ne marche pas tu devrai le modif !!
Donc mwa j'ai modifié le probléme kil y avait si tu veux voir --> #php <--
leowyatt
Messages postés
1
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
4 janvier 2006
-
Greg13127 -> Les notices ne sont pas des erreurs, c'est juste des " infos " on pourrait dire ( Undefined variable : Variable undéfinie ). Essaye la page sur un hebergeur ;)

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.