Indice del forum
RegistratiCercaFAQLista utentiGruppiLog in
Bot in PHP dal Web
Vai a 1, 2, 3  Successivo
 
Rispondi    Indice del forum » Bot, Eggdrop, Darkbot, Psotnic, Tcl & Co Precedente
Successivo
Bot in PHP dal Web
Autore Messaggio
Enrico204
Utente appena iscritto


Registrato: 17/11/05 14:31
Messaggi: 5
Residenza: Latina

Messaggio Bot in PHP dal Web Rispondi citando
Salve a tutti,
la mia non ? una richiesta di aiuto ma un pezzo di codice da usare per tutti quelli che vogliono fare un bel bot con PHP (in altre parti del sito non lo avevo trovato allora l'ho postato qui ;) ). Incollo qui il codice anche se ? un po lunghetto.
Codice:

<?
error_reporting(E_ALL);
set_time_limit(0);
ignore_user_abort(true);

/*   DA CONFIGURARE   */

$server = "irc.server.it";
$porta = 6667;
$nick = "nickbot";
$channel = "#canale_di_esempio";
$nickserv = false; # impostare come true se si vuole l'autenticazione con nickserv
$nickserv_passwd = "password"; # password nickserv (usata solo se ? abilitata quella sopra)
$exit_password = "CAMBIALA" # password per chiudere il bot (il cmd ? la password, es: se la password ? ciao il cmd sar? !ciao) si pu? inviare anke in pvt

/*    FINE CONFIGURAZIONE   */

$chann = $channel;
$canale = $channel;
$fp = fsockopen($server, $porta, $errno, $errstr, 30);
if (!$fp) {
   echo "Bot: Errore durante la connessione";
} else {
   fwrite($fp, "NICK $nick\n");
   fwrite($fp, "USER $nick 0 * :$nick\n");
   if($nickserv) {
      fwrite($fp, "PRIMSG NickServ IDENTIFY $nickserv_passwd\n");
   }
   fwrite($fp, "JOIN $channel\n");
   for(;;)
   {
      $buffer = fgets($fp,1000);
      /*******************************************************
      fgets legge i dati inviati dal server e con eregi li parsa
      con i comandi che abbiamo registrato.
      Questa ? la routine di reazione al PING da parte del server
      *******************************************************/
      if(eregi("PING",$buffer)) {
         $culos = substr($buffer,5);
         fwrite($fp, "PONG $culos\n");
      }
      $buffer = substr($buffer,1);
      if(eregi("PRIVMSG",$buffer)) {
         $mar = strlen(strtok($buffer," PRIVMSG "));
         $lenchan = $mar + strlen(" PRIVMSG ");
         $canal = substr($buffer,$lenchan);
         $canale = strtok($canal,":");
         $msgl = strtok($buffer,":");
         $messlen = strlen($msgl);
         $messaggio = substr($buffer,$messlen+1);
         $agente = strtok($buffer,"!");
         $one = strtok($messaggio," ");
         $onelenght = strlen($one);
         $onerest = substr($messaggio,$onelenght);
         $two = strtok($onerest," ");
         $twolenght = strlen($two);
         $tworest = substr($onerest,$twolenght+1);
         $three = strtok($tworest," ");
         $threelenght = strlen($three);
         $threerest = substr($tworest,$threelenght+1);
         // Se il canale di comunicazione ? una query privata
         // Il canale diventa l'agente
         if(!eregi("#",$canale)) {
            $canale=$agente;
         }
         // Se il messaggio ? stato inviato dal bot
         // Il canale diventa l'agente del messaggio
         if(strcasecmp($canale,$nick)==0) {
            $canale=$agente;
         }
         
         if(eregi("!$password",$one)) {
            exit;
            die();
         }
         
         /* 2?da Parte da editare ------------- */
         if(eregi("!prova_comando",$one)) {
            fwrite($fp, "PRIVMSG #treknology :Prova Risposta\n"); # AL POSTO DI PRIVMSG etc. POTETE METTERE UN COMANDO RAW DEL SERVER (SEMPRE SEGUITO DA \n)
         }
      }
   }
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento senza titolo</title>
</head>

<body>
</body>
</html>



L'ultima modifica di Enrico204 il Sab Ago 19, 2006 10:17 am, modificato 1 volta
Mer Nov 23, 2005 7:54 pm Profilo Invia messaggio privato HomePage
Guerrjero
Staff


Registrato: 10/11/02 11:53
Messaggi: 684
Residenza: Roma

Messaggio Rispondi citando
Aggiungo una cosuccia...
Per usarlo in remoto lo script va messo su un hosting che supporti php, oltre a questo pero' ? necessario che le connessioni sockets su porte diverse alla 80 siano abilitate (per esempio aruba non lo permette).

Cmq enrico grazie per la segnalazione, se vuoi puoi spedire l'articolo ad attila e lo mettiamo on line Very Happy

_________________
Staff TuttoIRC.it
Gio Dic 01, 2005 2:18 pm Profilo Invia messaggio privato Invia e-mail HomePage
Delpho
Utente Esperto


Registrato: 10/11/02 13:38
Messaggi: 213
Residenza: The Wired

Messaggio Rispondi citando
volevo dire che oltre a "Bot: Errore durante la connessione" quando la socket non riesce ad aprirla esce anche il tipico waring di php, c'? la possibilit? di disabilitarlo in modo che esca solo l'echo?
Mi interessa sapere come fare su server linux/webserver apache2

P.S. quando la socket la apre non c'? problema ovviamente

_________________
delpho[at]tuttoirc.it
wwy[at]azzurra.org
zoher[at]equilibrium-mud.org
Ven Dic 02, 2005 1:11 pm Profilo Invia messaggio privato Invia e-mail HomePage ICQ
Delpho
Utente Esperto


Registrato: 10/11/02 13:38
Messaggi: 213
Residenza: The Wired

Messaggio Rispondi citando
ok scoperto da solo, basta settare error_reporting(E_ALL); a error_reporting(0); Smile

_________________
delpho[at]tuttoirc.it
wwy[at]azzurra.org
zoher[at]equilibrium-mud.org
Ven Dic 02, 2005 1:35 pm Profilo Invia messaggio privato Invia e-mail HomePage ICQ
Guerrjero
Staff


Registrato: 10/11/02 11:53
Messaggi: 684
Residenza: Roma

Messaggio Rispondi citando
Si puo' anche mettere la @ davanti al comando ed evitare la stampa dell'errore.
Per esempio:
$fp = @fsockopen($server, $porta, $errno, $errstr, 30);
if (!$fp) {
echo "Bot: Errore durante la connessione";
} else {
echo "Bot: Connessione riuscita";
}

Chiss? se stiamo andando OT Very Happy

_________________
Staff TuttoIRC.it
Mar Dic 20, 2005 2:32 pm Profilo Invia messaggio privato Invia e-mail HomePage
valyus
Utente appena iscritto


Registrato: 04/04/06 21:40
Messaggi: 2
Residenza: Reggio Calabria

Messaggio Rispondi citando
A me non da alcun errore da nessuna parte, ma questo script come si dovrebbe avviare?

Io ho uppato il file ma non va, e non da errore :\

_________________
Admin: http://www.crocieristi.it
Mar Apr 04, 2006 10:16 pm Profilo Invia messaggio privato HomePage MSN
lollo.r0x
Veterano


Registrato: 15/06/06 14:14
Messaggi: 138
Residenza: Roma

Messaggio Rispondi citando
Scusate l'ignoranza, ma per inserire i vari codici per aggiungere funzioni al bot (quelle che per esempio nel mIrc mettiamo nei remotes...), come si fa?

Thx Very Happy
Dom Ago 06, 2006 2:10 pm Profilo Invia messaggio privato MSN
Remotes
Staff


Registrato: 12/11/05 19:32
Messaggi: 851
Residenza: Brusnengo (BI)

Messaggio Rispondi citando
/* 2?da Parte da editare ------------- */
if(eregi("!prova_comando",$one)) {
fwrite($fp, "PRIVMSG #treknology :Prova Risposta\n"); # AL POSTO DI PRIVMSG etc. POTETE METTERE UN COMANDO RAW DEL SERVER (SEMPRE SEGUITO DA \n)

vedi quella scritta?

? quella che devi editare Very Happy

ciao

_________________
Linux Registered User n? #449257
Dom Ago 06, 2006 4:14 pm Profilo Invia messaggio privato Invia e-mail HomePage MSN
lollo.r0x
Veterano


Registrato: 15/06/06 14:14
Messaggi: 138
Residenza: Roma

Messaggio Rispondi citando
AH ok...
bene questa cosa mi interessa ma...quali sono esattamente le RAW da inserire (mi basterebbero le principali...)?
E poi, una volta che io salvo il codice sul mio file *.php e lo carico sul server, dovrebbe collegarsi in automatico?
Altervista ? supportato?

E con questo penso di avere esaurito il pacchetto domande Very Happy
Dom Ago 06, 2006 6:44 pm Profilo Invia messaggio privato MSN
Remotes
Staff


Registrato: 12/11/05 19:32
Messaggi: 851
Residenza: Brusnengo (BI)

Messaggio Rispondi citando
uhm... non saprei aiutarti x i raw...

ci sono due errorini di php nel codice, per il resto una volta uppato sul server bisogna aprire la pagina dal browser...

altervista non lo supporta...

ciao

_________________
Linux Registered User n? #449257
Dom Ago 06, 2006 8:39 pm Profilo Invia messaggio privato Invia e-mail HomePage MSN
elegos
Livello intermedio


Registrato: 19/03/06 16:29
Messaggi: 44

Messaggio Rispondi citando
potrei postare una versione 'rivista & corretta' del codice se volete... per? ho un problema: come faccio a mandare messaggi di pi? di una parola?

per ora ho provato:

MSG #canale testo di un messaggio <-- non mi visualizza nulla
/msg #canale testo di un messaggio <-- non mi visualizza nulla
PRIVMSG #canale testo di un messaggio <-- mi visualizza solo la prima parola



come faccio? Aiuto!

Inoltre: quali sono gli altri possibili comandi?

Grazie
Dom Mar 11, 2007 11:44 pm Profilo Invia messaggio privato
Remotes
Staff


Registrato: 12/11/05 19:32
Messaggi: 851
Residenza: Brusnengo (BI)

Messaggio Rispondi citando
privmsg #canale :testo del messaggio

devi mettere : attaccato alla prima parola

ciao

_________________
Linux Registered User n? #449257
Lun Mar 12, 2007 5:57 am Profilo Invia messaggio privato Invia e-mail HomePage MSN
elegos
Livello intermedio


Registrato: 19/03/06 16:29
Messaggi: 44

Messaggio Rispondi citando
grazie Very Happy

ora lavoro su una versione PHP+MySQL e posto anche la v.PHP corretta (una volta ripuliita del mio codice Very Happy )

cmq la sintassi ? PRIVMSG CANALE :TESTO, non ci vuole # prima del canale Wink
Ven Mar 16, 2007 8:39 am Profilo Invia messaggio privato
elegos
Livello intermedio


Registrato: 19/03/06 16:29
Messaggi: 44

Messaggio Versione MySQL Rispondi citando
Ecco la versione MySQL!!!

EDIT: ho postato sul mio forum una guida pi? dettagliata sull'utilizzo...

http://forum.elegos.altervista.org/forum/viewtopic.php?t=5
Ven Mar 16, 2007 11:30 pm Profilo Invia messaggio privato
^DaNGeR^
Staff


Registrato: 13/12/05 00:59
Messaggi: 184

Messaggio Rispondi citando
Comunque quando si utilizza una variabile in PHP all'interno di una stringa tra apici doppi " " ? sempre meglio definire l'inizio e la fine della stessa usando le parentesi graffe come ad esempio:

Codice:
<?
$nome = "Utente";
echo "Benvenuto {$nome} su TuttoIRC.it";
?>

Questo per ovviare eventualmente a problemi derivati da parole senza spazi tipo con la variabile $nome che diventa $nomeNovizio (errato). Se si desidera unire UtenteNovizio bisogna usare la sintassi {$nome}Novizio con il risultato appunto UtenteNovizio.

_________________
Gio Gen 24, 2008 6:13 pm Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:    
Rispondi    Indice del forum » Bot, Eggdrop, Darkbot, Psotnic, Tcl & Co Tutti i fusi orari sono GMT + 1 ora
Vai a 1, 2, 3  Successivo
Pagina 1 di 3

 
Vai a: 
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi


Powered by phpBB © 2001, 2005 phpBB Group
Design by Freestyle XL / Flowers Online.phpbb.it