Salve a tutti. Sto scrivendo un bot per un canale irc di un altro forum. Devo recuperare dalla pagina principale gli utenti online.
Ecco il codice:
Codice PHP:
<?php
/*
PhBot. Sviluppato basandomi su InfBot creato da Robertof
*/
function msg($msg) {
global
$sk, $ch;
fwrite ($sk, "PRIVMSG ".$ch." :".$msg."\r\n");
return
true;
}
$bot = "PhBot";
$ch = "#thereborner";
$server = "irc.azzurra.org";
$sk = fsockopen($server, 6667);
fputs($sk,"USER ".$bot." ".$bot." ".$bot." ".$bot." :".$bot."\r\n");
fputs($sk,"NICK ".$bot."\r\n");
fputs($sk,"JOIN ".$ch."\r\n");
msg("Ciao a tutti, sono un bot creato da Phate. Digitate @help per la lista dei comandi");
print
"Bot started";
while(!
feof($sk)) {
$rec = fread($sk, 1024);
if(
preg_match("/KICK ".$ch." ".$bot."/",$rec)) {
fputs( $sk, "JOIN ".$ch."\r\n" );
msg("Non posso essere kickato :P");
}
if(
preg_match("/PRIVMSG ".$ch." :@users_online/",$rec)) {
msg("Sto recuperando la lista degli utenti online...");
$db = file_get_contents("http://thereborner.com/forum");
if(
eregi("Iscritti connessi: (.+) <br><em>",$db,$s))
msg("Iscritti Connessi: ".strip_tags($s[1]));
}
if(
preg_match("/JOIN :".$ch."/",$rec)) {
preg_match("/:(.+)!~/",$rec,$s);
if(
trim($s[1]) != $bot) {
msg("Benvenuto nel canale ".$ch.", ".$s[1]);
}
}
}
?>
Il secondo if riguarda gli utenti online. Recupero con file_get_contents() il codice della pagina principale. In seguito uso eregi() per recuperare gli iscritti. Solo che le espressioni regolari non sono il mio forte, qualcuno che se ne intende più di me mi può correggere il codice? Grazie