Merge pull request #556 from UnCLAS-Prommer/main-fix

日程检查,防止日程阻塞回复
This commit is contained in:
SengokuCola
2025-03-23 20:54:26 +08:00
committed by GitHub

View File

@@ -97,14 +97,28 @@ class ScheduleGenerator:
reg = r"\{(.|\r|\n)+\}" reg = r"\{(.|\r|\n)+\}"
matched = re.search(reg, schedule_text)[0] matched = re.search(reg, schedule_text)[0]
schedule_dict = json.loads(matched) schedule_dict = json.loads(matched)
self._check_schedule_validity(schedule_dict)
return schedule_dict return schedule_dict
except json.JSONDecodeError: except json.JSONDecodeError:
logger.exception("解析日程失败: {}".format(schedule_text)) logger.exception("解析日程失败: {}".format(schedule_text))
return False return False
except ValueError as e:
logger.exception(f"解析日程失败: {str(e)}")
return False
except Exception as e: except Exception as e:
logger.exception(f"解析日程发生错误:{str(e)}") logger.exception(f"解析日程发生错误:{str(e)}")
return False return False
def _check_schedule_validity(self, schedule_dict: Dict[str, str]):
"""检查日程是否合法"""
if not schedule_dict:
return
for time_str in schedule_dict.keys():
try:
self._parse_time(time_str)
except ValueError:
raise ValueError("日程时间格式不正确") from None
def _parse_time(self, time_str: str) -> str: def _parse_time(self, time_str: str) -> str:
"""解析时间字符串,转换为时间""" """解析时间字符串,转换为时间"""
return datetime.datetime.strptime(time_str, "%H:%M") return datetime.datetime.strptime(time_str, "%H:%M")