diff --git a/channel/wechat/wechat_message.py b/channel/wechat/wechat_message.py index 303a029..e7109d6 100644 --- a/channel/wechat/wechat_message.py +++ b/channel/wechat/wechat_message.py @@ -14,9 +14,10 @@ class WechatMessage(ChatMessage): self.create_time = itchat_msg["CreateTime"] self.is_group = is_group - notes_join_group = ["加入群聊","加入了群聊","invited","joined"] # 可通过添加对应语言的加入群聊通知中的关键词适配更多 - notes_exit_group = ["移出了群聊","removed"] # 可通过添加对应语言的踢出群聊通知中的关键词适配更多 - notes_patpat = ["拍了拍我","tickled my","tickled me"] # 可通过添加对应语言的拍一拍通知中的关键词适配更多 + notes_join_group = ["加入群聊", "加入了群聊", "invited", "joined"] # 可通过添加对应语言的加入群聊通知中的关键词适配更多 + notes_bot_join_group = ["邀请你", "invited you", "You've joined", "你通过扫描"] + notes_exit_group = ["移出了群聊", "removed"] # 可通过添加对应语言的踢出群聊通知中的关键词适配更多 + notes_patpat = ["拍了拍我", "tickled my", "tickled me"] # 可通过添加对应语言的拍一拍通知中的关键词适配更多 if itchat_msg["Type"] == TEXT: self.ctype = ContextType.TEXT @@ -30,26 +31,30 @@ class WechatMessage(ChatMessage): self.content = TmpDir().path() + itchat_msg["FileName"] # content直接存临时目录路径 self._prepare_fn = lambda: itchat_msg.download(self.content) elif itchat_msg["Type"] == NOTE and itchat_msg["MsgType"] == 10000: - if is_group and (any(note_join_group in itchat_msg["Content"] for note_join_group in notes_join_group)): # 若有任何在notes_join_group列表中的字符串出现在NOTE中 + if is_group: + if any(note_bot_join_group in itchat_msg["Content"] for note_bot_join_group in notes_bot_join_group): # 邀请机器人加入群聊 + logger.warn("机器人加入群聊消息,不处理~") + pass + elif any(note_join_group in itchat_msg["Content"] for note_join_group in notes_join_group): # 若有任何在notes_join_group列表中的字符串出现在NOTE中 # 这里只能得到nickname, actual_user_id还是机器人的id - if "加入群聊" not in itchat_msg["Content"]: - self.ctype = ContextType.JOIN_GROUP - self.content = itchat_msg["Content"] - if "invited" in itchat_msg["Content"]: # 匹配英文信息 - self.actual_user_nickname = re.findall(r'invited\s+(.+?)\s+to\s+the\s+group\s+chat', itchat_msg["Content"])[0] - elif "joined" in itchat_msg["Content"]: # 匹配通过二维码加入的英文信息 - self.actual_user_nickname = re.findall(r'"(.*?)" joined the group chat via the QR Code shared by', itchat_msg["Content"])[0] - elif "加入了群聊" in itchat_msg["Content"]: - self.actual_user_nickname = re.findall(r"\"(.*?)\"", itchat_msg["Content"])[-1] - elif "加入群聊" in itchat_msg["Content"]: - self.ctype = ContextType.JOIN_GROUP + if "加入群聊" not in itchat_msg["Content"]: + self.ctype = ContextType.JOIN_GROUP + self.content = itchat_msg["Content"] + if "invited" in itchat_msg["Content"]: # 匹配英文信息 + self.actual_user_nickname = re.findall(r'invited\s+(.+?)\s+to\s+the\s+group\s+chat', itchat_msg["Content"])[0] + elif "joined" in itchat_msg["Content"]: # 匹配通过二维码加入的英文信息 + self.actual_user_nickname = re.findall(r'"(.*?)" joined the group chat via the QR Code shared by', itchat_msg["Content"])[0] + elif "加入了群聊" in itchat_msg["Content"]: + self.actual_user_nickname = re.findall(r"\"(.*?)\"", itchat_msg["Content"])[-1] + elif "加入群聊" in itchat_msg["Content"]: + self.ctype = ContextType.JOIN_GROUP + self.content = itchat_msg["Content"] + self.actual_user_nickname = re.findall(r"\"(.*?)\"", itchat_msg["Content"])[0] + + elif any(note_exit_group in itchat_msg["Content"] for note_exit_group in notes_exit_group): # 若有任何在notes_exit_group列表中的字符串出现在NOTE中 + self.ctype = ContextType.EXIT_GROUP self.content = itchat_msg["Content"] self.actual_user_nickname = re.findall(r"\"(.*?)\"", itchat_msg["Content"])[0] - - elif is_group and (any(note_exit_group in itchat_msg["Content"] for note_exit_group in notes_exit_group)): # 若有任何在notes_exit_group列表中的字符串出现在NOTE中 - self.ctype = ContextType.EXIT_GROUP - self.content = itchat_msg["Content"] - self.actual_user_nickname = re.findall(r"\"(.*?)\"", itchat_msg["Content"])[0] elif "你已添加了" in itchat_msg["Content"]: #通过好友请求 self.ctype = ContextType.ACCEPT_FRIEND