因此,目前,我有一个基本的小聊天机器人,可以读取命令,并可以超时用户,如果他们的消息包含一个禁止的词或短语。我想知道我如何能够改进这个机器人,以便能够!add "word"到一组被禁止的文字和总体上的一般性缺陷改进。
import string
from Read import getUser, getMessage
from Socket import openSocket, sendMessage
from Initialize import joinRoom
s = openSocket()
joinRoom(s)
readbuffer = ""
banned_set = {"badword1", "badword2"}
while True:
readbuffer = readbuffer + s.recv(1024)
temp = string.split(readbuffer, "\n")
readbuffer = temp.pop()
for line in temp:
print(line)
if "PING" in line:
s.send(line.replace("PING", "PONG"))
break
user = getUser(line)
message = getMessage(line)
print user + " typed :" + message
if not banned_set.isdisjoint(message.lower().split()):
sendMessage(s, "/timeout " + user)
break
if "!guitars" in message:
sendMessage(s, "Ibanez RG920QM Premium")
break发布于 2016-04-01 18:14:16
我猜Read、Socket和Initialize都是您编写的模块。其中定义的函数不遵循PEP 8命名约定。PEP 8说要使用snake_case,而不是mixedCase。
您的缩进也不遵循PEP 8。您应该使用四空间缩进,而不是八空间.至少,你应该保持一致。
readbuffer = readbuffer + s.recv(1024)
重新定义自身的东西加上其他的东西是如此的普遍,以至于许多语言都有+=运算符。你可以在这里使用它:
readbuffer += s.recv(1024)Python还包括*=、/=、//=、^=等。
temp =string.split(重新缓冲区,"\n")
有一种更好的方法来分割每一行:
temp = readbuffer.splitlines()因为该行是您使用string模块的唯一位置,所以可以删除该导入。不过,您并不需要它,因为str有.split()方法。
打印用户+“输入:”+消息
使用格式字符串,而不是级联:
print "{0} typed: {1}".format(user, message)https://codereview.stackexchange.com/questions/124488
复制相似问题