Python IRC 查找状态消息
Python IRC Find status messages
专为 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 文件。
我不会为此使用正则表达式,而是检查以下部分:
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':
# ...
感谢您的帮助 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)
专为 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 文件。
我不会为此使用正则表达式,而是检查以下部分:
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':
# ...
感谢您的帮助 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)