Skip to content

Commit 04c27c9

Browse files
committed
🐛 使用文件名作为预设键保证唯一性
1 parent b00d3a8 commit 04c27c9

File tree

2 files changed

+17
-17
lines changed

2 files changed

+17
-17
lines changed

src/nonebot_plugin_nyaturingtest/presets.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,14 @@ class RolePreset:
5656
],
5757
)
5858

59-
PRESETS = []
59+
PRESETS: dict[str, RolePreset] = {}
6060

6161

6262
def _load_presets_from_directory(directory: str = "./nya_presets"):
6363
# 如果文件夹不存在就创建并且写入例子(_猫娘预设)
6464
if not os.path.exists(directory):
6565
os.makedirs(directory)
66-
with open(os.path.join(directory, "猫娘预设.json"), "w", encoding="utf-8") as f:
66+
with open(os.path.join(directory, "喵喵.json"), "w", encoding="utf-8") as f:
6767
json.dump(_猫娘预设.__dict__, f, ensure_ascii=False, indent=4)
6868
for filename in os.listdir(directory):
6969
if filename.endswith(".json"):
@@ -72,7 +72,7 @@ def _load_presets_from_directory(directory: str = "./nya_presets"):
7272
with open(path, encoding="utf-8") as f:
7373
data = json.load(f)
7474
preset = RolePreset(**data)
75-
PRESETS.append(preset)
75+
PRESETS[filename] = preset
7676
except Exception as e:
7777
logger.warning(f"无法加载预设 {filename}: {e}")
7878

src/nonebot_plugin_nyaturingtest/session.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -318,24 +318,24 @@ def presets(self) -> list[str]:
318318
"""
319319
获取可选预设
320320
"""
321-
return [f"{preset.name} {preset.role}" for preset in PRESETS if not preset.hidden]
321+
return [f"{filename}: {preset.name} {preset.role}" for filename, preset in PRESETS.items() if not preset.hidden]
322322

323-
def load_preset(self, preset_name: str) -> bool:
323+
def load_preset(self, filename: str) -> bool:
324324
"""
325325
加载预设
326326
"""
327-
for preset in PRESETS:
328-
if preset.name == preset_name:
329-
self.reset()
330-
self.set_role(preset.name, preset.role)
331-
self.long_term_memory_knowledge.add_texts(preset.knowledges)
332-
self.long_term_memory_relationships.add_texts(preset.relationships)
333-
self.long_term_memory_events.add_texts(preset.events)
334-
self.long_term_memory_self.add_texts(preset.bot_self)
335-
logger.info(f"加载预设:{preset_name}成功")
336-
return True
337-
logger.error(f"不存在的预设:{preset_name}")
338-
return False
327+
if filename not in PRESETS.keys():
328+
logger.error(f"不存在的预设:{filename}")
329+
return False
330+
preset = PRESETS[filename]
331+
self.reset()
332+
self.set_role(preset.name, preset.role)
333+
self.long_term_memory_knowledge.add_texts(preset.knowledges)
334+
self.long_term_memory_relationships.add_texts(preset.relationships)
335+
self.long_term_memory_events.add_texts(preset.events)
336+
self.long_term_memory_self.add_texts(preset.bot_self)
337+
logger.info(f"加载预设:{filename} 成功")
338+
return True
339339

340340
def status(self) -> str:
341341
"""

0 commit comments

Comments
 (0)