2015-04-05 2 views
0

Сделано для чата Twitch
Я хотел бы найти чат irc для определенного сообщения. Проблема с моим текущим кодом заключается в том, что сообщение на самом деле является статусом, и я не знаю, как определить статус.Python 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 РЕЖИМ #CHAN + о/-о #nick

Я хотел бы также использовать массив модов в другом файле (если это возможно), чтобы проверить, являются ли они модом или нет. В противном случае я могу записать его в .txt-файл.

+0

Просьба предоставить больше кода. И '\ w *' - неправильная вещь, чтобы соответствовать никому IRC. (совпадения '[a-zA-Z0-9_]' только, никогда не видели^в ник, скажем?) –

+0

Twitch, похоже, блокирует любые специальные символы в именах пользователей. (Насколько я видел), и какой код вам нужен? – Lynn

+0

Вместо этого я искал бы все, разделенное пробелами/пробелами –

ответ

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) 
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': 
     # ...