Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Python - IRC Bot
Forum - Python - IRC Bot

Avatar
Ant0 (Member)
Newbie


Messaggi: 5
Iscritto: 30/07/2006

Segnala al moderatore
Postato alle 9:50
Sabato, 19/08/2006
ciao! per cominciare a programmare in python ho deciso di scrivere un bot IRC.
Per adesso ho scritto solo il codice di connessione...
Codice sorgente - presumibilmente Python

  1. import socket
  2. """Dati connessione"""
  3. server = "84.19.188.132"
  4. port = 6667
  5. user = "ro-bot"
  6. nick = "ro-bot"
  7. channel = "#testing"
  8.  
  9. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Crea il socket
  10.  
  11. """Si connette al server e invia i dati: user, nickname e channel"""
  12. s.connect((server, port))
  13.  
  14. s.send("USER user\r\n")
  15. s.send("NICK nick\r\n")
  16. s.send("JOIN channel\r\n")
  17.  
  18. print "[+]Connesso.\n"
  19.  
  20. risposta_server = s.recv(4096)
  21. print risposta_server


Il problema è che questo script non mi printa a schermo tutta la risposta del server ma solo le prime due righe:

rehash.explosionirc.org- *** Looking up your hostname...
rehash.explosionirc.org- *** Checking ident...

e poi si chiude.
Come faccio per fargli ottenete tutta la risposta e non solo le 2 prime righe?
Io avevo pensato se c'era qualche funzione che permetteva come in php tipo set_time_limit(0) che non faceva chiudere il prog qualunque sia il tempo richiesto dall'operazione.
Ho provato anche con un ciclo while ma nn funzia...
Come posso rimediare?

ciao ciao:k:

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 19:07
Sabato, 19/08/2006
Prova con:

Codice sorgente - presumibilmente Python

  1. while (risposta_server = s.recv(4096)):
  2.         print risposta_server


Ultima modifica effettuata da pierotofy il 19/08/2006 alle 19:09


Il mio blog: https://piero.dev
PM Quote
Avatar
vito_ (Normal User)
Newbie


Messaggi: 2
Iscritto: 23/03/2008

Segnala al moderatore
Postato alle 18:24
Domenica, 23/03/2008
ehm...a me non mi funzia nemmeno dopo la correzione,
mi interessava un bot in python. fore ho corretto male, potete postare tutto il sorgente corretto per piacere ?

EDIT:ho risolto, ma il codice è abbastanza sbagliato. manca anche la risposta al ping. mi dite come posso aggiungerla?

Ultima modifica effettuata da vito_ il 25/03/2008 alle 23:08
PM Quote
Avatar
balloto (Ex-Member)
Rookie


Messaggi: 24
Iscritto: 25/04/2006

Segnala al moderatore
Postato alle 18:20
Mercoledì, 09/04/2008
Allora dovrebbe essere così per il PING (ho scritto un bel bot in python...codice un pò sporco ma funge!)

A te arriva questo comando dal server:

PING radiomarte.azzurra.org

Tu devi rispondere con:

PONG radiomarte.azzurra.org

Allora puoi fare così:

Codice sorgente - presumibilmente Python

  1. risposta_server_s = risposta_server.split("")
  2. if risposta_server_s[0].upper() == "PING":
  3.     s.send("PONG " + str(risposta_server_s[1])



Io facendo così (il concetto base è quello il mio codice è molto più incasinato XD) il bot rimane connesso e risponde ai ping...ciao!

PM Quote
Avatar
vito_ (Normal User)
Newbie


Messaggi: 2
Iscritto: 23/03/2008

Segnala al moderatore
Postato alle 22:30
Venerdì, 25/04/2008
non funziona il tuo codice (apparte che aveva un bug: alla fine mancava una parentesi) e anche dopo aver corretto il bug non funzionava lo stesso.
se volete comunque il codice intero del bot che funzioni (senza risposta al ping ancora :°D) io ce l'ho

PM Quote