IRC Client velocissimo per chattare in 2

Stato
Discussione chiusa ad ulteriori risposte.

uomosteriman

Utente Silver
8 Settembre 2007
14
0
0
62
Codice:
#!/usr/bin/python

import socket

import thread

print "\n------------------------------"

print "Python IRC Client by ^4st3r1X^"

print "Versione 8.4.01"

print "------------------------------\n"

server ='irc.eu.azzurra.org'

porta =6667

nick = raw_input("inserisci il nick(es: ciao_yena): ")

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect((server, porta))

s.send('USER python python python python\n')

s.send('NICK ' + nick + '\r\n')
data = s.recv(1000)
if data.find("252") != -1:

   print "\x1b[1;32m[+]Connesso\x1b[00m\r\n"

else:
   print "Interrotto...\r"
   exit()

join = "#becchisceddu"

if join[:1] == "#":

   s.send('JOIN ' + join + '\r\n')


def scrivi():

   while 1:

     text = raw_input()
     text2 = "PRIVMSG #becchisceddu :%s" % (text) 

     s.send(text2 + '\r\n' )

thread.start_new_thread(scrivi,())



while True:

   data = s.recv(1025)

   if data.find ('PING') != -1:

      s.send('PONG ' + data.split()[1] + '\r\n')

   elif data.find('PRIVMSG') != -1:

      nick = data.split('!')[0].replace (':', '')

      message = ':'.join(data.split(':')[2:])

      destination = ''.join(data.split(':')[:2]).split(' ')[-2]

      if destination == nick:

         destination = 'PRIVATE'

      print "( %s ): \x1b[1;34m%s\x1b[00m" % (nick, message)

--------------------------------------------------------

a.png
 
uhm, qualche cosetta:
1) Non rispetta l'rfc irc, l'user deve essere "USER nick * 0 :real\r\n" se nn erro, o qualcosa di simile.
2)che te ne fai della variabile nick2?
3) Ti consiglierei di passare a Python 3.X
4) Utilizzare la libreria threading, come specificano le direttive ufficiali: thread è per controlli a basso livello, threading offre di meglio.
5) Ti consiglieri o di farlo ad oggetti, o di mettere tutte le variabili, tipo chan etc, all'inizio del file, subito dopo gli import
6) scrivi il codice in modo appena appena + ordinato, nn è molto chiaro, ok che è una cavolata, ma meglio rispettare queste semplici cose

Insomma carino, anche se si può fare di meglio.
 
Malex ha detto:
uhm, qualche cosetta:
1) Non rispetta l'rfc irc, l'user deve essere "USER nick * 0 :real\r\n" se nn erro, o qualcosa di simile.
2)che te ne fai della variabile nick2?
3) Ti consiglierei di passare a Python 3.X
4) Utilizzare la libreria threading, come specificano le direttive ufficiali: thread è per controlli a basso livello, threading offre di meglio.
5) Ti consiglieri o di farlo ad oggetti, o di mettere tutte le variabili, tipo chan etc, all'inizio del file, subito dopo gli import
6) scrivi il codice in modo appena appena + ordinato, nn è molto chiaro, ok che è una cavolata, ma meglio rispettare queste semplici cose

Insomma carino, anche se si può fare di meglio.

1)rispetta l'rfc . i due punti servono solo per scrivere una frase,per una sola parola non sono necessari
2)la variabile nick 2 l ho tolta perchè mi sono accorto anch io ora che me l hai fatto notare XD
3)mi trovo meglio con python 2.*
4)uso la libreria thread perchè mi serve ^^
5)ognuno lo imposta come vuole XD non l'ho studiato a scuola il python,sono autodidatta quindi imposto il programma in modo da ricordarmi io dove ho messo le variabili e le librerie lol
6)non esistono regole..il programma funziona XD quindi è corretto.

*_* malex mi cerchi le minchiatine negli script buttati giu in 4 minuti? :( ho fatto questo script per chattare con 1 persona,perchè è molto piu veloce di msn :p diciamo che il lag è quasi assente ^^ ,l ho pubblicato per il fatto che è ultraistantaneo non per far vedere il codice XD è per dare uno spunto a qualsiasi persona che vuole fare una chat 1-1 .non mi serve un client irc pataccoso,preferisco usare mirc o xchat visto che non sono ancora in grado di creare un irc client come mirc o come xchat (e penso neanche tu *_*)

dimenticavo di dirti che le righe vuote è un errore di intestazione del browser copiando da windows a browser linux XD (copia e incolla) ^^ gh (lo dovevo rendere eseguibile per la persona che usa win lol)
 
1) guardati l'rfc NUOVA: l'user è con il * 0 al cento per cento: http://tools.ietf.org/html/rfc2812#section-3.1.3 <= look at this "USER guest 0 * :Ronnie Reagan" è l'esempio
3)ok, il mio era un consiglio, poi fa quel che vuoi
4) io dicevo che la libreria thread è deprecata e che bisognerebbe usare al suo posto la libreria threading.. tanto che in python3 thread nn esiste +, o meglio, viene cambiata in _thread, ma nn bisognerebbe usarla se nn in casi eccezionali
5) pure io sono autodidatta, come la maggior parte qua dentro, che credi, il mio era un consiglio per renderlo + leggibile
6) come sopra

Sì, critico quello che ritengo sia necessario criticare, giacché i forum e le pubblicazioni del codice sono fatte anche per questo, non solo per sentirsi dire bravi. Lungi da me voler flammare con te, sia chiaro, solo che se ritengo che ci sia qualcosa *a mio parere* sbagliata, lo faccio notare, anche per vedere l'altrui opinione e vedere quella che effettivamente è migliore.

Cmq, visto che era fatto per chattare con una persona: perché nn usare dei banali socket invece di un server irc?
 
Malex ha perfettamente ragione uomosteriman. Ah giusto, mi son dimenticato di chiedertelo:
Cmq, visto che era fatto per chattare con una persona: perché nn usare dei banali socket invece di un server irc?
 
Con dei banali socket c'è il rischio di avere problemi di connessione a causa di firewalls e routers.
Lo dico per esperienza diretta.
Btw se la memoria non m'inganna qualche guida allo stile suggeriva
Codice:
while True
anziché (come hai nella funzione scrivi)
Codice:
while 1
E io concordo: abbiamo la keyword True, usiamola!
 
anche perché 1 deve essere convertito un booleano per poi effettuare il controllo.. è un'ottimizzazione praticamente nulla, ma sempre meglio averla.

Cmq: credo che, siccome il programma che fa partire lo script è sempre considerato python(.exe) i firewaal nn stiano tanto a sindacare su questo. Per quanto riguarda il router, si, è vero
 
Malex ha detto:
anche perché 1 deve essere convertito un booleano per poi effettuare il controllo.. è un'ottimizzazione praticamente nulla, ma sempre meglio averla.

Cmq: credo che, siccome il programma che fa partire lo script è sempre considerato python(.exe) i firewaal nn stiano tanto a sindacare su questo. Per quanto riguarda il router, si, è vero
ci avevo provato anch'io ma le persone con cui lo usavo avevano problemi con il router e con il firewall,quindi per non rompermi le palle mi sono appoggiato a un server irc.
si avevi ragione che l rfc era cambiata XD sorry.grazie anche per l aggiornamento :D

Malex ha detto:
anche perché 1 deve essere convertito un booleano per poi effettuare il controllo.. è un'ottimizzazione praticamente nulla, ma sempre meglio averla.

Cmq: credo che, siccome il programma che fa partire lo script è sempre considerato python(.exe) i firewaal nn stiano tanto a sindacare su questo. Per quanto riguarda il router, si, è vero

poi comunque io sono su linux,e ti assicuro che sto meglio con la mia versione XD .
 
Stato
Discussione chiusa ad ulteriori risposte.