IRC Bot - 防洪(python)
Posted
技术标签:
【中文标题】IRC Bot - 防洪(python)【英文标题】:IRC Bot - flood protection (python) 【发布时间】:2011-04-19 23:14:12 【问题描述】: 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')
【问题讨论】:
【参考方案1】:据我所知,冒号是 IRC 协议中的保留字符。也就是说,服务器消息中的第一个冒号表示用户提供的数据的开始(这也是为什么昵称/频道名称中不允许使用“:”的原因)。因此,搜索第一个冒号并计算剩余字符串的长度就足够了。
此外,data.find('PRIVMSG')
非常不可靠。如果用户在常规频道对话中键入单词“PRIVMSG”怎么办?去查一下IRC RFC,里面详细说明了PRIVMSGs的格式。
此外,您应该更具体一点。您面临的具体问题是什么?提取刻痕?计算消息长度?连接到 IRC?
【讨论】:
计算消息长度以上是关于IRC Bot - 防洪(python)的主要内容,如果未能解决你的问题,请参考以下文章
Python IRC bot + SQLAlchemy - 多渠道跟踪用户
Python IRC-Bot Quakenet No Ident Response [关闭]
Python3 webserver 在 IRC bot 的线程之间进行通信