Domanda

Come posso fare qualche miglioramento nel mio client IRC realizzato in Python. Il miglioramento è: Come posso mettere qualcosa che l'utente può digitare i host, la porta, Nick, trattino e realname stringhe e il messaggio? E qui è il codice del programma:

  

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])

Ricorda che sto iniziando in fase di sviluppo di Python. Qui è dove ho trovato questo codice: http://oreilly.com/pub/h/1968 Grazie.

È stato utile?

Soluzione

Così si vuole all'utente di controllare le informazioni di connessione esatto che il client IRC usa? Per fare questo, è necessario raccogliere input da parte dell'utente prima di iniziare la connessione utilizzando il raw_input funzione.

NOTA:. Raw_input metterà a nudo un carattere di nuova riga finale

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

... per tutti i valori che si desidera l'utente sia in grado di configurare.

Esempio:

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

>>> 
Enter host: stackoverflow.com
stackoverflow.com
>>> 

Altri suggerimenti

Hai già il modello lì per quello che vuoi che faccia. Si sta facendo:

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

Non c'è ragione non si poteva adattare tale schema per accettare l'input di PORT, NICK, ecc.

Inoltre, mentre 1 non è molto Pythonic. Sì funziona, ma in realtà non v'è alcuna ragione per non utilizzare True. Non è un grosso problema, ma rende un po 'più leggibile il codice.

Non è una risposta diretta, ma si dovrebbe verificare l'attuazione IRC in contorto, un motore di networking event-driven scritto in Python, che include il supporto per irc in twisted.words.protocols.irc.

Se si sta cercando di portare avanti azioni in risposta all'input dell'utente, forse il modulo cmd vi aiuterà fuori:

Se siete interessati nel protocollo IRC per sé, questo tutorial sull'utilizzo di socket per scrivere un client IRC in Python può essere utile:

Se sei nuovo di zecca per Python, un client IRC è abbastanza un'impresa, soprattutto se non avete lavorato con i clienti simili prima in altre lingue.

Io vi consiglierei di cercare su threading, in modo che si può mettere il gestore IRC su un thread separato, e ricevere l'input dell'utente su un altro thread (Se a fare entrambe sullo stesso thread, uno sarà bloccare l'altra, rendendo per una brutta esperienza.)

Per rispondere alla tua domanda, però, il modo più semplice per ottenere input da parte dell'utente nella console è quello di utilizzare in = raw_input() , ma come detto, non interagirà bene con la presa sullo stesso filo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top