2010-02-07 31 views
1
import socket 
from time import strftime 

time = strftime("%H:%M:%S") 

irc = 'irc.tormented-box.net' 
port = 6667 
channel = '#test' 
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sck.connect((irc, port)) 
print sck.recv(4096) 
sck.send('NICK supaBOT\r\n') 
sck.send('USER supaBOT supaBOT supaBOT :supaBOT Script\r\n') 
sck.send('JOIN ' + channel + '\r\n') 
while True: 
    data = sck.recv(4096) 
    if data.find('PING') != -1: 
     sck.send('PONG ' + data.split() [1] + '\r\n') 
    elif data.find ('PRIVMSG') != -1: 
     nick = data.split ('!') [ 0 ].replace (':', '') 
     if data.find('!op') != -1: 
     sck.send('MODE #test +o ' + nick + '\r\n') 

當我試圖在IRC中操作nick時,我最終會自己操作自己而不是給其他用戶提供+ o,我不知道我必須在「尼克「變量..我會感激,如果有人可以幫助我..謝謝。Python IRC Client

回答

3

你真的需要重新思考你如何解析消息;因爲我可以說「哈哈!opwned PRIVMSG」得到操作。 (對於其他人:PRIVMSG是IRC協議的一部分,用戶通常不會這麼說)。

但是,我沒有在您當前的代碼中看到錯誤,但是您已經更改了您真正運行的時間你發佈到SO(查看最後一行的縮進是否錯誤,這根本不會運行)。你是否意外改變了其他重要的東西?

設置自己的某種調試控制檯與原始IRC流量;這將是非常寶貴的。寫入一個簡單的文件是可行的(確保你刷新它,然後你可以使用「尾隨 - 」在你的機器人運行時查看它)。然後你可以注入你自己的調試信息,這將幫助你調試這樣的問題。 (例如,您將包含repr(nick)和repr(data)以查看發生了什麼)。

1

您可能會覺得Supybot項目很有趣,它是一個用Python編寫的IRC bot,輕鬆創建自己的插件,這些額外的工作已經爲您完成了很多,所以您只需要擔心所需的功能。

G'Luck!

Supybot Sourceforge