Python IRC客户端

时间:2010-02-06 09:59:46

标签: python

当我运行脚本时:

import socket
from time import strftime

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

irc = 'irc.tormented-box.net'
port = 6667
channel = '#tormented'
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')
sck.send('PRIVMSG #tormented :supaBOT\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 ( ':', '' )
        message = ':'.join ( data.split ( ':' ) [ 2: ] )
        destination = ''.join ( data.split ( ':' ) [ :2 ] ).split ( ' ' ) [ -2 ]
        if destination == 'supaBOT':
          destination = 'PRIVATE'
        print '(', destination, ')', nick + ':', message
        get = message.split(' ') [1]
        if get == 'hi':
           try:
               args = message.split(' ') [2:]
               sck.send('PRIVMSG ' + destination + ' :' + nick + ': ' + 'hello' + '\r\n')
           except:
               pass

我得到的是错误:

get = message.split(' ')[1]

IndexError: list index out of range

我该如何解决?

2 个答案:

答案 0 :(得分:3)

这意味着message中没有空格,所以当它被空格分割时,会得到一个包含单个元素的列表 - 您正在尝试访问此列表的第二个元素。您应该为此案例插入支票。

编辑:回复您的评论:如何添加支票取决于您的计划的逻辑。最简单的解决方案是:

if ' ' in msg:
    get = message.split(' ')[1]
else:
    get = message

答案 1 :(得分:0)

尝试

get = message.split(" ",1)[-1]

实施例

>>> "abcd".split(" ",1)[-1]
'abcd'
>>> "abcd efgh".split(" ",1)[-1]
'efgh'