Python IRC客户端
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,但当我输入!commands时,系统回复我“你不是我的主人”,可是我的昵称确实是s0urd。也许我在设置昵称的时候搞错了,我也不太清楚,不过任何帮助都会很感激,谢谢。
第26行
1 个回答
1
nick = data.split('!')[ 0 ].replace(':',' ')
这个操作会把 :
替换成一个空格(),所以最后得到的字符串会是
"s0urd "
,而不是 "s0urd"
。你可能想要的是这个:
nick = data.split('!')[ 0 ].replace(':','')
注意在作为替换字符串的 ''
之间没有空格。