簡體   English   中英

使用Python改進IRC客戶端

[英]Improve a IRC Client in Python

我如何在使用Python制作的IRC客戶端中進行一些改進。 改進之處在於:我該如何放置一些內容,使用戶可以鍵入HOST,PORT,NICK,INDENT和REALNAME字符串以及消息? 這是程序的代碼:

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

請記住,我開始從事Python開發。 在這里我找到了此代碼: http : //oreilly.com/pub/h/1968 。謝謝。

您已經有了所需的藍圖。 你在做:

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

沒有理由,您無法使該方案接受PORTNICK等的輸入。

另外,雖然1並不是非常Pythonic。 是的,它可以工作,但實際上沒有理由不使用True 沒什么大不了的,但是它使代碼更具可讀性。

因此,您希望用戶控制IRC客戶端使用的確切連接信息嗎? 為此,在使用raw_input函數開始連接之前,必須收集用戶的輸入。

注意:raw_input將刪除尾隨換行符。

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

...對於您希望用戶能夠配置的所有值。

例:

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

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

這不是一個直接的答案,但是您應該檢查twisted中IRC實現, twisted是一個用Python編寫的事件驅動的網絡引擎,在twisted.words.protocols.irc中包括對irc支持。

如果您嘗試執行響應用戶輸入的操作,則cmd模塊可能會幫助您:

如果您對IRC協議本身感興趣,那么有關使用套接字在python中編寫IRC客戶端的本教程可能會有用:

如果您是Python的新手,那么IRC客戶端就是一項艱巨的任務,尤其是如果您以前從未使用過其他語言的類似客戶端。

我建議您查找線程,以便將IRC處理程序放在單獨的線程上,並在另一個線程上接收用戶輸入(如果兩個線程都在同一線程上執行,則一個線程會阻塞另一個線程,這很糟糕。經驗。)

不過,要回答您的問題,最簡單的從控制台中的用戶獲取輸入的方法是使用in = raw_input() ,但是正如我所說的那樣,它不會與同一線程上的套接字很好地交互。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM