mirror of
https://github.com/FuQuan233/nonebot-plugin-llmchat.git
synced 2025-09-04 18:30:43 +00:00
🔨 use nonebot_plugin_localstore to save data
This commit is contained in:
parent
b19e13b6b4
commit
a87d3e64ff
4 changed files with 17 additions and 9 deletions
|
@ -1,5 +1,5 @@
|
|||
import aiofiles
|
||||
from nonebot import get_plugin_config, on_message, logger, on_command, get_driver
|
||||
from nonebot import get_plugin_config, on_message, logger, on_command, get_driver, require
|
||||
from nonebot.plugin import PluginMetadata
|
||||
from nonebot.adapters.onebot.v11 import GroupMessageEvent, Message
|
||||
from nonebot.adapters.onebot.v11.permission import GROUP_ADMIN, GROUP_OWNER
|
||||
|
@ -19,6 +19,9 @@ import random
|
|||
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
||||
import time
|
||||
|
||||
require("nonebot_plugin_localstore")
|
||||
import nonebot_plugin_localstore as store
|
||||
|
||||
__plugin_meta__ = PluginMetadata(
|
||||
name="llmchat",
|
||||
description="支持多API预设配置的AI群聊插件",
|
||||
|
@ -283,9 +286,15 @@ async def handle_preset(event: GroupMessageEvent, args: Message = CommandArg()):
|
|||
|
||||
|
||||
# region 持久化与定时任务
|
||||
|
||||
# 获取插件数据目录
|
||||
data_dir = store.get_plugin_data_dir()
|
||||
# 获取插件数据文件
|
||||
data_file = store.get_plugin_data_file("llmchat_state.json")
|
||||
|
||||
async def save_state():
|
||||
"""保存群组状态到文件"""
|
||||
logger.info(f"开始保存群组状态到文件:{pluginConfig.storage_path}")
|
||||
logger.info(f"开始保存群组状态到文件:{data_file}")
|
||||
data = {
|
||||
gid: {
|
||||
"preset": state.preset_name,
|
||||
|
@ -297,17 +306,17 @@ async def save_state():
|
|||
for gid, state in group_states.items()
|
||||
}
|
||||
|
||||
os.makedirs(os.path.dirname(pluginConfig.storage_path), exist_ok=True)
|
||||
async with aiofiles.open(pluginConfig.storage_path, "w") as f:
|
||||
os.makedirs(os.path.dirname(data_file), exist_ok=True)
|
||||
async with aiofiles.open(data_file, "w") as f:
|
||||
await f.write(json.dumps(data, ensure_ascii=False))
|
||||
|
||||
async def load_state():
|
||||
"""从文件加载群组状态"""
|
||||
logger.info(f"从文件加载群组状态:{pluginConfig.storage_path}")
|
||||
if not os.path.exists(pluginConfig.storage_path):
|
||||
logger.info(f"从文件加载群组状态:{data_file}")
|
||||
if not os.path.exists(data_file):
|
||||
return
|
||||
|
||||
async with aiofiles.open(pluginConfig.storage_path, "r") as f:
|
||||
async with aiofiles.open(data_file, "r") as f:
|
||||
data = json.loads(await f.read())
|
||||
for gid, state_data in data.items():
|
||||
state = GroupState()
|
||||
|
|
|
@ -18,7 +18,6 @@ class ScopedConfig(BaseModel):
|
|||
request_timeout: int = Field(30, description="API请求超时时间(秒)")
|
||||
default_preset: str = Field("off", description="默认使用的预设名称")
|
||||
random_trigger_prob: float = Field(0.05, ge=0.0, le=1.0, description="随机触发概率(0-1]")
|
||||
storage_path: str = Field("data/llmchat_state.json", description="状态存储文件路径")
|
||||
default_prompt: str = Field("你的回答应该尽量简洁、幽默、可以使用一些语气词、颜文字。你应该拒绝回答任何政治相关的问题。", description="默认提示词")
|
||||
|
||||
class Config(BaseModel):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue