feature:1.点歌功能,2.签到功能

This commit is contained in:
liuwei
2025-03-05 09:01:08 +08:00
parent 5ed4c94094
commit 9937115ad3
14 changed files with 524 additions and 200 deletions

View File

@@ -4,15 +4,18 @@ import xml.etree.ElementTree as ET
from wcferry import Wcf
class GroupMemberChange:
def __init__(self, wcf: Wcf):
def __init__(self, wcf: Wcf, redis_pool: redis.ConnectionPool):
self.wcf = wcf # 假设 wcf 对象在此类中初始化
self.r = redis.Redis(host='192.168.2.32', port=6379, db=0, decode_responses=True)
self.redis_pool = redis_pool
# 初始化本地缓存字典,使用 group_id 作为键
self.local_membercounts = {}
self.local_members = {}
def _get_redis_connection(self):
"""从连接池获取 Redis 连接"""
return redis.Redis(connection_pool=self.redis_pool)
def get_current_members(self, group_id):
""" 获取当前群成员信息 """
print(f"Fetching current members for group_id: {group_id}")
@@ -27,8 +30,8 @@ class GroupMemberChange:
# 读取 Redis 中的数据
print(f"Fetching previous data from Redis for group_id: {group_id}")
membercount_previous = self.r.get(membercount_key)
members_previous = self.r.hgetall(members_key) # 获取上次的成员信息
membercount_previous = self._get_redis_connection().get(membercount_key)
members_previous = self._get_redis_connection().hgetall(members_key) # 获取上次的成员信息
print(f"Previous membercount: {membercount_previous}, Previous members: {members_previous}")
return membercount_previous, members_previous
@@ -48,9 +51,10 @@ class GroupMemberChange:
if membercount_previous is None or not members_previous:
print("First time processing, saving current data to Redis")
members_current = self.get_current_members(group_id)
self.r.set(f"group:group_member_count:{group_id}", membercount_current)
self.r.delete(f"group:group_members:{group_id}")
self.r.hset(f"group:group_members:{group_id}", mapping=members_current) # 存储当前成员信息
self._get_redis_connection().set(f"group:group_member_count:{group_id}", membercount_current)
self._get_redis_connection().delete(f"group:group_members:{group_id}")
self._get_redis_connection().hset(f"group:group_members:{group_id}",
mapping=members_current) # 存储当前成员信息
# 更新本地缓存
self.local_membercounts[group_id] = membercount_current
@@ -99,11 +103,11 @@ class GroupMemberChange:
# 更新 Redis 数据
print(f"Updating Redis with current membercount and members")
self.r.set(f"group:group_member_count:{group_id}", membercount_current)
self._get_redis_connection.set(f"group:group_member_count:{group_id}", membercount_current)
self.r.delete(f"group:group_members:{group_id}")
self._get_redis_connection.delete(f"group:group_members:{group_id}")
# 更新 Redis 中的成员信息,确保在成员变化时也更新
self.r.hset(f"group:group_members:{group_id}", mapping=members_current)
self._get_redis_connection.hset(f"group:group_members:{group_id}", mapping=members_current)
else:
result.append("$NO_CHANGE$")