签到功能加入了总天数记录。

This commit is contained in:
liuwei
2025-09-18 10:02:10 +08:00
parent aeb05c678e
commit 6b7993068b
2 changed files with 23 additions and 5 deletions

View File

@@ -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

View File

@@ -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(