From 6b7993068b236b78a3ed9df44de9c73b98f952c3 Mon Sep 17 00:00:00 2001 From: liuwei Date: Thu, 18 Sep 2025 10:02:10 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=BE=E5=88=B0=E5=8A=9F=E8=83=BD=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E4=BA=86=E6=80=BB=E5=A4=A9=E6=95=B0=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/sign_in_redis.py | 11 ++++++++--- plugins/message_sign/main.py | 17 +++++++++++++++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/db/sign_in_redis.py b/db/sign_in_redis.py index 3f61ced..64bbfee 100644 --- a/db/sign_in_redis.py +++ b/db/sign_in_redis.py @@ -84,7 +84,8 @@ class SignInRedisDB: """增加用户签到总次数""" key = self.get_user_total_sign_count_key(wx_id, group_id) with self.get_redis_connection() as redis_client: - return redis_client.incr(key) + count = redis_client.incr(key) + return count def get_user_total_sign_count(self, wx_id: str, group_id: str) -> int: """获取用户签到总次数""" @@ -96,5 +97,9 @@ class SignInRedisDB: def set_user_total_sign_count(self, wx_id: str, group_id: str, count: int) -> bool: """设置用户签到总次数""" key = self.get_user_total_sign_count_key(wx_id, group_id) - with self.get_redis_connection() as redis_client: - return redis_client.set(key, count) + try: + with self.get_redis_connection() as redis_client: + redis_client.set(key, count) + return True + except Exception: + return False diff --git a/plugins/message_sign/main.py b/plugins/message_sign/main.py index d4dedfb..aecc2b6 100644 --- a/plugins/message_sign/main.py +++ b/plugins/message_sign/main.py @@ -252,8 +252,10 @@ class MessageSignPlugin(MessagePluginInterface): # 如果 sign_stat 已经大于或等于今天的零点,则认为用户已经签到过了 if sign_stat >= today_start: + # 获取总签到次数(不增加) + total_sign_count = self.sign_in_redis.get_user_total_sign_count(sender, roomid) client_msg_id, create_time, new_msg_id = await self.bot.send_text_message( - (roomid if roomid else sender), f"您今天已经签到过了!", sender) + (roomid if roomid else sender), f"您今天已经签到过了!\n总签到次数:{total_sign_count}次", sender) revoke.add_message_to_revoke(roomid, client_msg_id, create_time, new_msg_id, 4) return False, "已签到" @@ -537,6 +539,15 @@ class MessageSignPlugin(MessagePluginInterface): last_sign_date, # 保留原来的last_sign_date 0 # 清除previous_streak,因为已经恢复了 ) + + # 记录签到历史 + self.sign_in_db.create_sign_history( + sender, roomid, yesterday_time, current_time, + True, 0, new_streak + ) + + # 更新Redis中的签到总次数 + total_sign_count = self.sign_in_redis.increment_user_sign_count(sender, roomid) # 发送成功消息 success_message = f"✅ 补签成功!\n💰 消费 {self.makeup_cost} 积分\n" @@ -546,7 +557,9 @@ class MessageSignPlugin(MessagePluginInterface): success_message += f"🎉 恢复连签!连续签到天数:{new_streak}\n" else: success_message += f"🔄 连续签到天数:{new_streak}\n" - + + # 添加总签到次数信息 + success_message += f"📊 总签到次数:{total_sign_count}次\n" success_message += f"💰 当前积分:{user_points['total_points'] - self.makeup_cost}" await self.bot.send_text_message(