diff --git a/nonebot_plugin_orangedice/__init__.py b/nonebot_plugin_orangedice/__init__.py index 3b60779..78ace9e 100644 --- a/nonebot_plugin_orangedice/__init__.py +++ b/nonebot_plugin_orangedice/__init__.py @@ -2,7 +2,7 @@ from re import search, Match from random import choice from typing import Dict, Union -from nonebot import get_driver +from nonebot import get_plugin_config from nonebot.params import Depends from nonebot.matcher import Matcher from nonebot.plugin import on_startswith, on_message, PluginMetadata @@ -55,14 +55,13 @@ insane_list = on_startswith(".list", priority=4) # 获取所有疯狂表 temp_insane = on_startswith(".ti", priority=5) # 临时疯狂表 forever_insane = on_startswith(".li", priority=5) # 永久疯狂表 - -# -> 非阻断响应器 -log_msg = on_message(priority=1, block=False) # 记录日志 - # -> 数据相关 -driver = get_driver() -plugin_config = Config.parse_obj(driver.config) +plugin_config = get_plugin_config(Config) data = DataContainer() +# -> 非阻断响应器 +async def log_msg_rule(event: GroupMessageEvent) -> bool: + return data.is_logging(event.group_id) +log_msg = on_message(rule=log_msg_rule, priority=1, block=False) # 记录日志 @roll.handle() @@ -211,8 +210,7 @@ async def log_msg_handle(event: GroupMessageEvent): group_id: int = event.group_id msg: str = event.message.extract_plain_text() name: str = get_name(event) - if data.is_logging(group_id): - data.log_add(group_id, f'[{name}] {msg}') + data.log_add(group_id, f'[{name}] {msg}') @roll_p.handle() diff --git a/nonebot_plugin_orangedice/config.py b/nonebot_plugin_orangedice/config.py index db2aed4..8478508 100644 --- a/nonebot_plugin_orangedice/config.py +++ b/nonebot_plugin_orangedice/config.py @@ -1,5 +1,5 @@ -from pydantic import BaseModel, Extra +from pydantic import BaseModel -class Config(BaseModel, extra=Extra.ignore): +class Config(BaseModel): cache_file: str = 'cache.txt' sqlite_file: str = 'orange_dice.db' \ No newline at end of file diff --git a/nonebot_plugin_orangedice/model.py b/nonebot_plugin_orangedice/model.py index 90ee312..8d8bf0e 100644 --- a/nonebot_plugin_orangedice/model.py +++ b/nonebot_plugin_orangedice/model.py @@ -5,9 +5,8 @@ import json from typing import List -from nonebot import get_driver +from nonebot import get_plugin_config from sqlmodel import Field, SQLModel, create_engine,select, Session - from .config import Config @@ -25,7 +24,7 @@ class GroupLOG(SQLModel, table=True): class DataContainer: def __init__(self) -> None: - config = Config.parse_obj(get_driver().config) + config = get_plugin_config(Config) self.sqlite_file = config.sqlite_file self.engine = create_engine(f"sqlite:///{self.sqlite_file}") SQLModel.metadata.create_all(self.engine) @@ -124,9 +123,12 @@ def log_add(self, group_id: int, msg: str): statement = select(GroupLOG).where(GroupLOG.group_id == group_id) log = session.exec(statement).first() if log: - a = json.loads(log.msg) + try: + a = json.loads(log.msg) + except json.decoder.JSONDecodeError: + a = [] a.append(msg) - log.msg = str(a) + log.msg = json.dumps(a, ensure_ascii=False) session.add(log) else: log = GroupLOG(group_id=group_id, log=False, msg=f'[{msg}]')