修复签到bug

This commit is contained in:
liuwei
2025-04-11 11:08:02 +08:00
parent 0e28c752b6
commit f79015317c

View File

@@ -357,32 +357,33 @@ class MessageSignPlugin(MessagePluginInterface):
)
return True, "无签到记录"
# 获取上次签到时间
# 获取上次签到时间并规范化到零点
last_sign_date = None
if user_record.get('last_sign_date'):
# 如果有last_sign_date字段使用它
last_sign_date = user_record['last_sign_date']
last_sign_date = user_record['last_sign_date'].replace(hour=0, minute=0, second=0, microsecond=0)
elif user_record.get('sign_stat'):
# 否则使用sign_stat
last_sign_date = user_record['sign_stat']
last_sign_date = user_record['sign_stat'].replace(hour=0, minute=0, second=0, microsecond=0)
# 确保时区一致
if isinstance(last_sign_date, datetime) and last_sign_date.tzinfo is None:
last_sign_date = pytz.timezone(self.timezone).localize(last_sign_date)
# 获取当前签到状态
sign_stat = user_record.get('sign_stat')
if isinstance(sign_stat, datetime) and sign_stat.tzinfo is None:
sign_stat = pytz.timezone(self.timezone).localize(sign_stat)
# 获取当前签到状态并规范化到零点
sign_stat = None
if user_record.get('sign_stat'):
sign_stat = user_record['sign_stat'].replace(hour=0, minute=0, second=0, microsecond=0)
if sign_stat.tzinfo is None:
sign_stat = pytz.timezone(self.timezone).localize(sign_stat)
# 检查是否已经签到今天
if sign_stat and sign_stat >= today_start:
# 今天已经签到,检查是否需要补签昨天
if last_sign_date and last_sign_date >= day_before_yesterday and last_sign_date < yesterday:
# 上次签到在前天,今天已签到,可以补签昨天
pass
self.LOG.info(f"今天已签到可以补签昨天last_sign_date: {last_sign_date}")
else:
# 昨天已经签到了或者断签超过一天,不需要补签
self.LOG.info(f"不符合补签条件last_sign_date: {last_sign_date}, sign_stat: {sign_stat}")
self.message_util.send_text_msg(
"❌ 您昨天已经签到过了或断签超过一天,不符合补签条件!",
(roomid if roomid else sender), sender
@@ -391,6 +392,7 @@ class MessageSignPlugin(MessagePluginInterface):
else:
# 今天未签到,检查是否符合补签条件(只能补签昨天)
if not last_sign_date or last_sign_date < day_before_yesterday:
self.LOG.info(f"断签超过一天last_sign_date: {last_sign_date}")
self.message_util.send_text_msg(
"❌ 只能补签断签一天的情况!您已断签超过一天或没有签到记录。",
(roomid if roomid else sender), sender
@@ -398,6 +400,7 @@ class MessageSignPlugin(MessagePluginInterface):
return True, "不符合补签条件"
if last_sign_date >= yesterday:
self.LOG.info(f"昨天已签到last_sign_date: {last_sign_date}")
self.message_util.send_text_msg(
"❌ 您昨天已经签到过了,不需要补签!",
(roomid if roomid else sender), sender