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 - 多渠道跟踪用户

IRC Python Bot:最佳方式 [关闭]

Python IRC-Bot Quakenet No Ident Response [关闭]

Python3 webserver 在 IRC bot 的线程之间进行通信

如何使用 Python Twitch IRC Bot 获取聊天消息参数?

Twisted irc python bot - 缓冲消息