import re from astrbot.api import logger class Pattern: _pattern = r'((?!wt).)*' _MAX_SEC = 1800 _MIN_SEC = 10 # 定义最大与最小的范围,固定输入的规范 def __init__(self,o_str:str) -> None: res = self.extract(o_str) self.count:int|None = res['second'] self.string:str = res["content"] def sec_range(self,i)->int: if i > Pattern._MAX_SEC: return Pattern._MAX_SEC if i < Pattern._MIN_SEC : return Pattern._MIN_SEC return i def load(self,pattern_str:str)->int|None: content = pattern_str.strip().removeprefix("").removesuffix("").strip() print(content) try: num = int(content) return self.sec_range(num) except: logger.debug ("模板内容错误:{}".format(content)) return None def extract(self,o_str:str): # 多次匹配防止重复模板 timerSec :None|int = None res=re.finditer(Pattern._pattern,o_str) for i in res : # 对结果和源字符串处理 o_str = o_str.replace(i.group(),"",1) num = self.load(i.group()) logger.info("获得模板:{0}".format(i.group())) if num and not timerSec: timerSec = num #消除不完整/非法模板 o_str= o_str.replace("","") o_str=o_str.replace("","") return { "content":o_str, "second":timerSec } print(Pattern("awdwadawdada"))