【问题标题】:IRC Bot - flood protection (python)IRC Bot - 防洪(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')

【问题讨论】:

    标签: python string irc


    【解决方案1】:

    据我所知,冒号是 IRC 协议中的保留字符。也就是说,服务器消息中的第一个冒号表示用户提供的数据的开始(这也是为什么昵称/频道名称中不允许使用“:”的原因)。因此,搜索第一个冒号并计算剩余字符串的长度就足够了。

    此外,data.find('PRIVMSG') 非常不可靠。如果用户在常规频道对话中键入单词“PRIVMSG”怎么办?去查一下IRC RFC,里面详细说明了PRIVMSGs的格式。

    此外,您应该更具体一点。您面临的具体问题是什么?提取刻痕?计算消息长度?连接到 IRC?

    【讨论】:

    • 计算消息长度
    猜你喜欢
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2014-09-09
    • 2023-03-25
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    相关资源
    最近更新 更多