Mejorar un cliente de IRC en Python
-
13-09-2019 - |
Pregunta
¿Cómo puedo hacer un poco de mejoría en mi cliente de IRC hecho en Python. La mejora es: ¿Cómo puedo poner algo que el usuario puede escribir los host, puerto, Nick, guión y RealName cuerdas y el mensaje? Y aquí está el código del programa:
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])
Recuerde que estoy empezando en el desarrollo de Python. Aquí es donde me he encontrado este código: http://oreilly.com/pub/h/1968 Gracias.
Solución
Así que desea que el usuario controle la información de conexión exacta que utiliza el cliente de IRC? Con el fin de hacer esto, debe recoger la entrada del usuario antes de empezar su conexión utilizando el raw_input función.
NOTA:. Raw_input se tira de un carácter de nueva línea de fuga
HOST = raw_input('Enter Host: ')
PORT = int(raw_input('Enter Port: '))
... para todos los valores que desea que el usuario pueda configurar.
Ejemplo:
HOST = raw_input('Enter host: ')
print HOST
>>>
Enter host: stackoverflow.com
stackoverflow.com
>>>
Otros consejos
Ya tiene el modelo allí por lo que quiere que haga. Lo estás haciendo:
if(line[0]=="PING"):
No hay razón por la que no se podía adaptar este régimen a aceptar la entrada de PORT
, NICK
, etc.
Además, mientras que 1 no es muy Pythonic. Sí funciona, pero en realidad no hay ninguna razón para no usar True
. No es un gran problema, pero hace que el código un poco más legible.
Si usted está tratando de llevar a cabo acciones en respuesta a la entrada del usuario, tal vez el módulo cmd
le ayudará a cabo:
Si está interesado en el protocolo IRC en sí, este tutorial sobre el uso de enchufes para escribir un cliente de IRC en Python pueden ser de utilidad:
Si eres nuevo en Python, un cliente de IRC es un proyecto muy grande, especialmente si usted no ha trabajado con clientes similares antes en otros idiomas.
Yo le recomendaría a mirar hacia arriba en la rosca, de modo que usted puede poner su manejador de IRC en un hilo separado, y recibir la entrada del usuario en otro hilo (Si lo hace, tanto en el mismo hilo, uno va a bloquear la otra, haciendo de una mala experiencia.)
Para responder a su pregunta, sin embargo, la forma más sencilla de obtener la entrada del usuario en la consola es utilizar in =
raw_input()
, pero como dije, no va a interactuar bien con la toma de corriente en el mismo hilo.