1. Importiamo i socket:
Qui mi sembra tutto più che esplicito, importiamo la libreria dei socket che ci saranno necessari dopo quando dovremo far connettere il bot e per tutto ciò che accade dopo la connessione. Sono come le gambe di un corridore, necessari.
2. Creiamo una funzione di inizio:
Dobbiamo creare una func iniziale, da cui far innescare altre func. In questa func creiamo il socket e poi lo facciamo connettere al server IRC desiderato e alla porta sfruttata da quello specifico server. Ora, per fare le cose per bene, richiamiamo una funzione di invio dati personali [vedi 3.] e infine ne richiamiamo un altra di ascolto e rielaborazione dei dati inviati dal server [vedi 4.].
3. Definiamo la funzione di invio dati personali:
Ci basterà far sendare al socket i dati che il server richiede ad ogni utente alla connessione, il linguaggio del server è un linguaggio a se stante quindi vi dico io cosa sendare. Ok, nel primo send metteremo questa stringa: 'NICK %s\r\n' % 'BOT' dove BOT è il nick del vostro bot che comparirà nella lista utenti collegati al chan. Nel secondo metteremo questa stringa: "USER %s %s bla :%s\r\n" % ('ID', 'SERVER ', ‘NOME’) dove ID è l’id del bot (a vostra scelta), SERVER è il server a cui vi siete connessi prima [vedi 1.] e NOME è il nome “reale” del bot (a vostra scelta anche questo). Infine sul terzo ed ultimo send mettete questa stringa: 'JOIN #CHAN\n\r' dove CHAN è il chan che il bot joinerà appena loggato al server.
4. Definiamo la funzione di ascolto e rielaborazione:
Bene questa funzione non farà altro che mettere tutti i byte ricevuti dal server in una variabile e analizzare la variabile, il tutto inserito in un ciclo while così che il bot non smetta mai di ricevere e analizzare. Però dovete sapere che il server invia ad ogni utente un PING e cioè una richiesta a cui il vostro client di chat risponde finché voi siete collegati. Questo fa capire al server quando un utente cade e molte altre cose. Se il server non riceve una risposta alla richiesta PING segnalerà che il bot è caduto facendo comparire in chan un messaggio tipo questo: *BOT è uscito (ping time out). Per evitare questo seguite le mie indicazioni: create dentro il ciclo while un if, fate analizzare a questo if il contenuto della variabile a cui avete fatto immagazzinare i byte ricevuti se contiene la parola PING o, meglio, se inizia con la parola PING fate richiamere una funzione di ping [vedi 5.] e il vostro bot sarà allora stabile.
5. Definiamo la funzione di PING:
Vi basterà far sendare al socket questa stringa: 'PONG :' + VAR.split(' ')[1] + '\r\n' dove VAR è la variabile a cui avete assegnato il socket.recv() e VAR.split(‘ ‘)[1] corrisponde alla parola dopo “PING” nel messaggio-richiesta del server (spesso è il nome del server stesso).
Ora potete mettere tutte le funzioni dentro una classe e usare “self” per non incasinarvi con le variabili e avrete un bot stabile e un codice il più possibile pulito e ordinato. Al contrario si potrebbe anche lasciare tutto fuori da un aclasse e usare meno funzioni, ma il codice, imho, sarebbe una schifezza
Rielaborando con più scrupolo i dati ricevuti dal server (aggiungendo if che richiamano funzioni sotto il while) potete sviluppare un sempre miglior bot dalle prestazioni notevoli.
POTETE TROVARE IL CODICE DI UN MINIMAL BOT COME QUELLO SPIEGATO SOPRA E MAGARI PARTIRE DIRETTAMENTE DA LI’ PER CREARE IL VOSTRO PERSONALE BOT IRC A QUESTO INDIRIZZO: http://www.sk-projex.blogspot.com

