修复签到bug
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user