Python IRC查找状态消息

时间:2015-04-05 05:48:24

标签: python irc twitch

为Twitch聊天
我想在irc聊天中搜索某个消息。我当前代码的问题是该消息实际上是一个状态,我不知道如何检测状态。

代码:

while True:
try:
    data = data+con.recv(1024)
    data_split = re.split(r"[~\r\n]+", data)
    data = data_split.pop()

    for line in data_split:
        print(line)
        line = str.rstrip(line)
        line = str.split(line)


        if len(line) >= 1:
            if line[0] == 'PING':
                send_pong(con, line[1])

            if line[1] == 'PRIVMSG':
                sender = get_sender(line[0])
                message = get_message(line)
                channel = line[2]
                print(sender + ": " + message)

                if (re.match(':jtv MODE \w* +o \w*', message)):
                    mods.append(channel)
                    mods[channel].append(msg[4])

原始状态如下:
:jtv MODE #CHAN + o / -o #nick

我还想在另一个文件中使用mods数组(如果可能的话)来检查它们是否是mod。否则我可以将它写入.txt文件。

2 个答案:

答案 0 :(得分:0)

我不会使用正则表达式,而是检查部分:

parts = message.split()
if len(parts) == 5 and parts[:2] == [':jtv', 'MODE']:
    # it is a mode change
    channel, mode, nick = parts[2:5]
    if mode == '-o':
        # ...

答案 1 :(得分:0)

感谢您的帮助Antti Haapala。为我的结构找到了解决方案:

 message = ' '.join(line)
 x = re.findall('^:jtv MODE (.*?) \+o (.*)$', message)
 if (len(x) > 0):
     #print('DEBUG: Regex')
     channel = x[0][0] 
     if (channel not in mods):
         mods[channel] = []
         list = mods.get(channel)
         list.append(x[0][1])
         print(mods)