所以我创建了一个聊天机器人抽搐电视几个月前已经好几个月了。要么聊天太频繁,要么twitch改变了他们发送信息的方式。不管怎样,在收到的每一条消息中,当打印到控制台时,我都会添加一个新行,而有些消息没有添加行,这意味着多个消息可以放在一个行中irc.recv公司(). 我尝试编辑recv的大小,但没有成功。这是印刷品的图像irc.recv公司()给予,以防有帮助。在
http://i.stack.imgur.com/pWeGt.jpg
如果你看中间部分,你会发现这两条消息之间没有空格,这意味着如果第二个人做了一些可以禁止的事情,第一个用户将被禁止。在
正如你所看到的,你可以很容易地通过“:nick!nick@nick.tmi.twitch.tvPRIVMSG#channel:“,但是对于理解这种设计的人来说,滥用bot并让任何人超时也很容易。在
我希望实现的是修改irc.recv公司()以便它只接收并且始终只接收一条消息。在
下面是一些代码片段,可以更好地理解正在发生的事情。在
# -*- coding: utf-8 -*-
import socket
import threading
import datetime
import time
bot_owner = 'asd'
nick = 'asdrobot'
channel = '#asd'
server = 'irc.twitch.tv'
password = 'asd' #login authentication
global irc
irc = socket.socket()
irc.connect((server, 6667)) #connects to the server
irc.send('PASS ' + password + '\r\n')
irc.send('USER ' + nick + ' 0 * :' + bot_owner + '\r\n')
irc.send('NICK ' + nick + '\r\n')
irc.send('JOIN ' + channel + '\r\n')
while True:
senderdata = irc.recv(1024) #gets output from IRC server
sendermessage = '' #Empties variable
senderuser = '' #Empties variable
senderusertemplist = [] #Empties variable
if(senderdata.find('PRIVMSG') != -1):
print senderdata
try:
senderuser = senderdata.split(':')[1]
senderuser = senderuser.split('!')[0] #determines the sender of the messages
except IndexError as e:
senderuser = 'ERRORERROR'
print 'can not split this data'
print e
sendermessage = senderdata.split(channel)[-1]
sendermessage = sendermessage.split(':', 1)[-1]
sendermessagelow = sendermessage.lower()
这些只是最重要的部分,当代码到达这一点时,问题已经发生了。在
如果没有办法“解决”这个问题,而且这是IRC工作的一部分,我很想知道,但如果你知道解决问题的方法,我将不胜感激。在
谢谢。在
我决定使用性能安全性,因为在这种情况下,安全性并不是什么大问题。我是怎么解决的:
如果有人试图复制这个“解决方案”,“tryComment()”就是检查消息的原始主循环。如果是某人加入、某人离开或消息为空,则会忽略检查函数。在
相关问题 更多 >
编程相关推荐