Skip to content

Commit b00d3a8

Browse files
committed
✨ 添加隐藏预设功能,添加自定义本地预设功能
1 parent 89dfc99 commit b00d3a8

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

src/nonebot_plugin_nyaturingtest/presets.py

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
from dataclasses import dataclass, field
2+
import json
3+
import os
4+
5+
from nonebot import logger
26

37

48
@dataclass
@@ -27,6 +31,10 @@ class RolePreset:
2731
"""
2832
预设对自我的认知
2933
"""
34+
hidden: bool = False
35+
"""
36+
是否在/presets输出隐藏预设
37+
"""
3038

3139

3240
_猫娘预设 = RolePreset(
@@ -48,4 +56,25 @@ class RolePreset:
4856
],
4957
)
5058

51-
PRESETS = [_猫娘预设]
59+
PRESETS = []
60+
61+
62+
def _load_presets_from_directory(directory: str = "./nya_presets"):
63+
# 如果文件夹不存在就创建并且写入例子(_猫娘预设)
64+
if not os.path.exists(directory):
65+
os.makedirs(directory)
66+
with open(os.path.join(directory, "猫娘预设.json"), "w", encoding="utf-8") as f:
67+
json.dump(_猫娘预设.__dict__, f, ensure_ascii=False, indent=4)
68+
for filename in os.listdir(directory):
69+
if filename.endswith(".json"):
70+
path = os.path.join(directory, filename)
71+
try:
72+
with open(path, encoding="utf-8") as f:
73+
data = json.load(f)
74+
preset = RolePreset(**data)
75+
PRESETS.append(preset)
76+
except Exception as e:
77+
logger.warning(f"无法加载预设 {filename}: {e}")
78+
79+
# 模块导入时自动加载外部预设
80+
_load_presets_from_directory()

src/nonebot_plugin_nyaturingtest/session.py

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

323323
def load_preset(self, preset_name: str) -> bool:
324324
"""

0 commit comments

Comments
 (0)