2011-04-19 96 views
0
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')它的作品。IRC殭屍 - 防洪(蟒蛇)

修復了踢腳問題,現在代碼工作正常,但它只讀取第一行,不確定如何讓其讀取其他行,如果用戶持續氾濫通道。

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

據我所知,冒號是IRC協議中的保留字符。也就是說,服務器消息中的第一個冒號表示用戶提供的數據的開始(這也是nicks/channel名稱中不允許使用「:」的原因)。因此,搜索第一個冒號並計算剩餘字符串的長度就足夠了。

此外,data.find('PRIVMSG')是相當不可靠的。如果用戶在常規頻道對話中鍵入「PRIVMSG」這個詞怎麼辦?查看IRC RFC,它詳細說明了PRIVMSG的格式。

此外,你應該更具體一點。你面臨的問題究竟是什麼?提取尼克?計算消息長度?連接到IRC?

+0

計算消息長度 – SourD 2011-04-19 23:41:08

+0

好吧,現在你知道了;) – Philip 2011-04-19 23:42:13