if data.find('PRIVMSG') != -1:
nick = data.split('!')[ 0 ].replace(':','')
text = ''
if data.count(text) >= 200:
sck.send('KICK ' + " " + chan + " :" 'flooding' + '\r\n')
我正在尝试为机器人编写防洪保护程序,如果他输入超过200个字符,我希望它能够踢用户,我怎样才能使它能够读取其他行而不仅仅是第一行?并且上面的代码不起作用,它不会给用户带来任何影响,但是如果我将sck.send()
更改为sck.send('PRIVMSG ' + chan + " :" 'flooding' + '\r\n')
则可行。
修复了踢腿问题,代码现在正常工作,但它只读取第一行,如果用户不断充斥频道,则不知道如何让它读取其他行。
if data.find('PRIVMSG') != -1:
nick = data.split('!')[ 0 ].replace(':','')
text = ''
if data.count(text) >= 200:
sck.send('KICK ' + " " + chan + " " + nick + " :" 'flooding' + '\r\n')
答案 0 :(得分:0)
据我记忆,冒号是IRC协议中的保留字符。也就是说,服务器消息中的第一个冒号表示用户提供的数据的开始(这也是为什么在缺刻/通道名称中不允许“:”)。因此,搜索第一个冒号并计算剩余字符串的长度就足够了。
此外,data.find('PRIVMSG')
非常不可靠。如果用户在常规频道对话中键入“PRIVMSG”一词会怎样?去查看IRC RFC,它详细说明了PRIVMSG的格式。
此外,你应该更具体一点。你面临的问题究竟是什么?提取缺口?计算邮件长度?连接到IRC?