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')发布于 2011-04-20 07:38:37
据我所知,冒号是IRC协议中的保留字符。也就是说,服务器消息中的第一个冒号表示用户提供的数据的开始(这也是为什么在nicks/channel名称中不允许使用":“的原因)。因此,搜索第一个冒号并计算剩余字符串的长度就足够了。
此外,data.find('PRIVMSG')非常不可靠。如果用户在常规频道对话中输入单词"PRIVMSG“怎么办?去查找IRC RFC,它详细说明了PRIVMSG的格式。
另外,你应该说得更具体一点。你面临的问题到底是什么?提取刻痕吗?计算消息长度?连接到IRC?
https://stackoverflow.com/questions/5723839
复制相似问题