No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

51 líneas
2.1KB

  1. import hashlib
  2. import re
  3. import time
  4. import config
  5. from common.log import logger
  6. def time_checker(f):
  7. def _time_checker(self, *args, **kwargs):
  8. _config = config.conf()
  9. chat_time_module = _config.get("chat_time_module", False)
  10. if chat_time_module:
  11. chat_start_time = _config.get("chat_start_time", "00:00")
  12. chat_stopt_time = _config.get("chat_stop_time", "24:00")
  13. time_regex = re.compile(
  14. r"^([01]?[0-9]|2[0-4])(:)([0-5][0-9])$"
  15. ) # 时间匹配,包含24:00
  16. starttime_format_check = time_regex.match(chat_start_time) # 检查停止时间格式
  17. stoptime_format_check = time_regex.match(chat_stopt_time) # 检查停止时间格式
  18. chat_time_check = chat_start_time < chat_stopt_time # 确定启动时间<停止时间
  19. # 时间格式检查
  20. if not (
  21. starttime_format_check and stoptime_format_check and chat_time_check
  22. ):
  23. logger.warn(
  24. "时间格式不正确,请在config.json中修改您的CHAT_START_TIME/CHAT_STOP_TIME,否则可能会影响您正常使用,开始({})-结束({})".format(
  25. starttime_format_check, stoptime_format_check
  26. )
  27. )
  28. if chat_start_time > "23:59":
  29. logger.error("启动时间可能存在问题,请修改!")
  30. # 服务时间检查
  31. now_time = time.strftime("%H:%M", time.localtime())
  32. if chat_start_time <= now_time <= chat_stopt_time: # 服务时间内,正常返回回答
  33. f(self, *args, **kwargs)
  34. return None
  35. else:
  36. if args[0]["Content"] == "#更新配置": # 不在服务时间内也可以更新配置
  37. f(self, *args, **kwargs)
  38. else:
  39. logger.info("非服务时间内,不接受访问")
  40. return None
  41. else:
  42. f(self, *args, **kwargs) # 未开启时间模块则直接回答
  43. return _time_checker