繁体   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