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.

¿Fue útil?

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.

No es una respuesta directa, pero se debe comprobar la aplicación IRC en trenzado, un motor de red orientada a eventos escrita en Python que incluye soporte para irc en twisted.words.protocols.irc.

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top