2009-07-13 11 views
0

Wie kann ich eine Verbesserung in meinem IRC-Client in Python machen. Die Verbesserung ist: Wie kann ich etwas setzen, dass der Benutzer die HOST, PORT, NICK, INDENT und REALNAME Strings und die Nachricht eingeben? Und hier ist der Code des Programms:Verbessere einen IRC-Client in Python

simplebot.py

import sys 
import socket 
import string 

HOST="irc.freenode.net" 
PORT=6667 
NICK="MauBot" 
IDENT="maubot" 
REALNAME="MauritsBot" 
readbuffer="" 

s=socket.socket() 
s.connect((HOST, PORT)) 
s.send("NICK %s\r\n" % NICK) 
s.send("USER %s %s bla :%s\r\n" % (IDENT, HOST, REALNAME)) 

while 1: 
    readbuffer=readbuffer+s.recv(1024) 
    temp=string.split(readbuffer, "\n") 
    readbuffer=temp.pop() 

    for line in temp: 
     line=string.rstrip(line) 
     line=string.split(line) 

     if(line[0]=="PING"): 
      s.send("PONG %s\r\n" % line[1]) 

Denken Sie daran, dass ich in Python Entwicklung fange. Hier ist, wo ich diesen Code gefunden habe: http://oreilly.com/pub/h/1968. Danke.

Antwort

2

Sie möchten also, dass der Benutzer die genauen Verbindungsinformationen steuert, die der IRC-Client verwendet? Um dies zu tun, müssen Sie Eingaben vom Benutzer sammeln, bevor Sie Ihre Verbindung mit der Funktion raw_input starten.

HINWEIS: raw_input entfernt ein abschließendes Zeilenumbruchzeichen.

HOST = raw_input('Enter Host: ') 
PORT = int(raw_input('Enter Port: ')) 

... für alle Werte, die der Benutzer konfigurieren können soll.

Beispiel:

HOST = raw_input('Enter host: ') 
print HOST 

>>> 
Enter host: stackoverflow.com 
stackoverflow.com 
>>> 
+0

Vielen Dank !!! –

2

Sie haben bereits den Bauplan für das, was Sie tun wollen. Sie tun:

if(line[0]=="PING"): 

Kein Grund könnten Sie diese Regelung nicht anpassen Eingabe von PORT, NICK usw.

auch zu akzeptieren, während 1 nicht sehr Pythonic ist. Ja, es funktioniert, aber es gibt keinen Grund, nicht True zu verwenden. Es ist keine große Sache, aber es macht den Code etwas lesbarer.

1

keine direkte Antwort, aber Sie sollen die IRC Implementierung in twisted überprüfen, ein ereignisgesteuerte Networking-Engine in Python geschrieben, die Unterstützung für irc in twisted.words.protocols.irc umfasst.

+0

Das ist eine gute Bibliothek ist! –

0

Wenn Sie neu bei Python sind, ist ein IRC-Client eine ziemliche Angelegenheit, besonders wenn Sie zuvor nicht mit ähnlichen Clients in anderen Sprachen gearbeitet haben.

Ich würde Ihnen empfehlen, nach Threading zu suchen, so dass Sie Ihren IRC-Handler auf einen separaten Thread setzen können und Benutzereingaben in einem anderen Thread erhalten (Wenn Sie beide auf demselben Thread tun, wird einer den anderen blockieren, was für eine schlechte Erfahrung gemacht.)

um Ihre Frage zu beantworten, die einfachste Art und Weise aber, eine Eingabe vom Benutzer in der Konsole zu erhalten, ist in =raw_input(), zu verwenden, aber wie gesagt, es wird nicht gut auf dem mit der Fassung zusammenwirken Gleicher Thread.