2010-06-19 112 views
0
import socket, sys, string 

if len(sys.argv) !=4 : 
    print "Usage: ./supabot.py <host> <port> <channel>" 
    sys.exit(1) 

irc = sys.argv[1] 
port = int(sys.argv[2]) 
chan = sys.argv[3] 
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sck.connect((irc, port)) 
sck.send('NICK supaBOT\r\n') 
sck.send('USER supaBOT supaBOT supaBOT :supaBOT Script\r\n') 
sck.send('JOIN ' + " " + chan + '\r\n') 
data = '' 
while True: 
     data = sck.recv(1024) 
     if data.find('PING') != -1: 
     sck.send('PONG ' + data.split() [1] + '\r\n') 
     print data 
     elif data.find('!info') != -1: 
      sck.send('PRIVMSG ' + chan + ' :' + ' supaBOT v1 by sourD ' + '\r\n') 
      print data 
     elif data.find('!commands') != -1: 
      nick = data.split('!')[ 0 ].replace(':',' ') 
      if nick == "s0urd": 
       sck.send('PRIVMSG ' + chan + ' :' + ' no commands have been set ' + '\r\n') 
      else: 
       sck.send('PRIVMSG ' + chan + ' :' + ' youre not my master ' + '\r\n') 
       print data 
     elif data.find('PRIVMSG') != -1: 
      message = ':'.join(data.split (':')[2:]) 
      if message.lower().find('darkunderground') == -1: 
      nick = data.split('!')[ 0 ].replace(':',' ') 
      destination = ''.join (data.split(':')[:2]).split (' ')[-2] 
      function = message.split()[0] 
      print nick + ' : ' + function 
      arg = data.split() 

print sck.recv(1024) 

我的暱稱在IRC被s0urd但是當我型!命令我得到「你不是我的主人」,但我的暱稱是s0urd,也許我整個缺口thinfg錯了,我不知道,任何幫助將不勝感激,謝謝。Python的IRC客戶端

線26

回答

1
nick = data.split('!')[ 0 ].replace(':',' ') 

那將會有空間()取代:,因而所得到的字符串將是"s0urd ",不"s0urd"。你可能意味着這個:

nick = data.split('!')[ 0 ].replace(':','') 

注意缺少的''之間的空間作爲替換字符串傳遞。

+0

謝謝琥珀,它的工作原理;) – SourD 2010-06-19 08:26:39