diff --git a/group_auto/group_member_change.py b/group_auto/group_member_change.py index b51e919..2b219da 100644 --- a/group_auto/group_member_change.py +++ b/group_auto/group_member_change.py @@ -8,8 +8,8 @@ class GroupMemberChange: def __init__(self, wcf: Wcf): self.wcf = wcf # 假设 wcf 对象在此类中初始化 self.r = redis.Redis(host='192.168.2.32', port=6379, db=0, decode_responses=True) - # 初始化本地缓存 - self.local_membercount = None + # 初始化本地缓存字典,使用 group_id 作为键 + self.local_membercounts = {} self.local_members = {} def get_current_members(self, group_id): @@ -33,15 +33,13 @@ class GroupMemberChange: def process_message(self, group_id, xml_data_current): """ 处理消息并更新 Redis """ - # print(f"Processing message for group_id: {group_id}") root_current = ET.fromstring(xml_data_current) membercount_current = root_current.find('membercount').text - # print(f"Current membercount: {membercount_current}") result = [] # 初始化文案列表 # 如果本地没有缓存数据,则从 Redis 获取 - if self.local_membercount is None or not self.local_members: + if group_id not in self.local_membercounts or group_id not in self.local_members: print("No local data, fetching from Redis") membercount_previous, members_previous = self.get_previous_data_from_redis(group_id) @@ -53,22 +51,20 @@ class GroupMemberChange: self.r.hmset(f"group:group_members:{group_id}", members_current) # 存储当前成员信息 # 更新本地缓存 - self.local_membercount = membercount_current - self.local_members = members_current + self.local_membercounts[group_id] = membercount_current + self.local_members[group_id] = members_current result.append("$NO_CHANGE$") return "\n".join(result) else: # 使用本地缓存的数据进行比较 - # print("Using local data for comparison") - membercount_previous = self.local_membercount - members_previous = self.local_members + membercount_previous = self.local_membercounts[group_id] + members_previous = self.local_members[group_id] # 比较 membercount 是否发生变化 if membercount_current != membercount_previous: print(f"Membercount changed: {membercount_previous} -> {membercount_current}") - # result.append(f"membercount has changed: {membercount_previous} -> {membercount_current}") members_current = self.get_current_members(group_id) # 比较成员,仅使用 wxid 进行比较 @@ -81,17 +77,15 @@ class GroupMemberChange: # 添加变化成员的文案 for wxid in added_members: nickname = members_current[wxid] - # print(f"Detected member added: {nickname} ({wxid})") result.append(f"检测到 {nickname}({wxid})加入群聊") for wxid in removed_members: nickname = members_previous[wxid] - # print(f"Detected member removed: {nickname} ({wxid})") result.append(f"检测到 {nickname}({wxid})退出群聊") # 更新本地缓存 print(f"Updating local cache with current membercount and members") - self.local_membercount = membercount_current - self.local_members = members_current + self.local_membercounts[group_id] = membercount_current + self.local_members[group_id] = members_current # 更新 Redis 数据 print(f"Updating Redis with current membercount and members") @@ -99,7 +93,6 @@ class GroupMemberChange: self.r.hmset(f"group:group_members:{group_id}", members_current) else: - # print("No change detected in membercount") result.append("$NO_CHANGE$") # 返回拼接后的结果