@@ -41,6 +41,7 @@ class LoreParser:
41
41
"_random_handler" ,
42
42
"_logic_handler" ,
43
43
"_save_handler" ,
44
+ "trigger_count" ,
44
45
)
45
46
46
47
def __init__ (self , lorebook : dict [str , Any ], scan_depth : int = 1 ):
@@ -120,6 +121,9 @@ def __init__(self, lorebook: dict[str, Any], scan_depth: int = 1):
120
121
self ._logic_handler = LogicHandler (self )
121
122
self ._save_handler = SaveHandler (self )
122
123
124
+ # 初始化触发器计数器
125
+ self .trigger_count : dict [str , int ] = {}
126
+
123
127
def __str__ (self ) -> str :
124
128
"""返回解析器的字符串表示"""
125
129
return f"LoreParser(variables={ self ._vars } ,triggers={ self ._triggers } ,authors_notes={ self ._notes } )"
@@ -370,6 +374,10 @@ def _process_trigger(
370
374
371
375
return not trigger .block if can_trigger else True
372
376
377
+ def reset_trigger_count (self ) -> None :
378
+ """重置所有触发器的计数器"""
379
+ self .trigger_count .clear ()
380
+
373
381
def process_chat (self ) -> LoreResult :
374
382
"""处理聊天消息,应用所有适用的触发器和注释
375
383
@@ -381,7 +389,6 @@ def process_chat(self) -> LoreResult:
381
389
"""
382
390
result = LoreResult ()
383
391
triged_lis : set [str ] = set ()
384
- trigger_count : dict [str , int ] = {}
385
392
# 更新真实世界的空闲时间
386
393
self ._real_idle ["before" ] = self ._real_idle ["after" ]
387
394
self ._real_idle ["after" ] = datetime .now ()
@@ -390,7 +397,7 @@ def process_chat(self) -> LoreResult:
390
397
for trigger in self ._triggers :
391
398
# 检查触发次数限制
392
399
if trigger .max_trig != - 1 :
393
- current_count = trigger_count .get (trigger .name , 0 )
400
+ current_count = self . trigger_count .get (trigger .name , 0 )
394
401
if current_count >= trigger .max_trig :
395
402
continue # 跳过已达到最大触发次数的触发器
396
403
@@ -404,7 +411,9 @@ def process_chat(self) -> LoreResult:
404
411
# 处理当前触发器
405
412
if self ._can_trigger (trigger , self .messages ):
406
413
# 增加触发次数计数
407
- trigger_count [trigger .name ] = trigger_count .get (trigger .name , 0 ) + 1
414
+ self .trigger_count [trigger .name ] = (
415
+ self .trigger_count .get (trigger .name , 0 ) + 1
416
+ )
408
417
409
418
# 处理触发器, 如果返回 False,则停止处理下一个触发器
410
419
if not self ._process_trigger (
0 commit comments