首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原始Twitch.tv聊天机器人

原始Twitch.tv聊天机器人
EN

Code Review用户
提问于 2016-04-01 17:58:11
回答 1查看 875关注 0票数 -1

因此,目前,我有一个基本的小聊天机器人,可以读取命令,并可以超时用户,如果他们的消息包含一个禁止的词或短语。我想知道我如何能够改进这个机器人,以便能够!add "word"到一组被禁止的文字和总体上的一般性缺陷改进。

代码语言:javascript
复制
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
EN

回答 1

Code Review用户

发布于 2016-04-01 18:14:16

我猜ReadSocketInitialize都是您编写的模块。其中定义的函数不遵循PEP 8命名约定。PEP 8说要使用snake_case,而不是mixedCase

您的缩进也不遵循PEP 8。您应该使用四空间缩进,而不是八空间.至少,你应该保持一致。

readbuffer = readbuffer + s.recv(1024)

重新定义自身的东西加上其他的东西是如此的普遍,以至于许多语言都有+=运算符。你可以在这里使用它:

代码语言:javascript
复制
readbuffer += s.recv(1024)

Python还包括*=/=//=^=等。

temp =string.split(重新缓冲区,"\n")

有一种更好的方法来分割每一行:

代码语言:javascript
复制
temp = readbuffer.splitlines()

因为该行是您使用string模块的唯一位置,所以可以删除该导入。不过,您并不需要它,因为str.split()方法。

打印用户+“输入:”+消息

使用格式字符串,而不是级联:

代码语言:javascript
复制
print "{0} typed: {1}".format(user, message)
票数 3
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/124488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档