diff --git a/plugins/message_sign/main.py b/plugins/message_sign/main.py index 5bb2474..5beecdb 100644 --- a/plugins/message_sign/main.py +++ b/plugins/message_sign/main.py @@ -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