mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-09 22:00:01 +08:00
Merge 7da68190b6 into 68460d18cc
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
from typing import Any, Literal
|
||||
|
||||
from nonebot.adapters import Bot, Event
|
||||
from nonebot.exception import SkippedException
|
||||
from nonebot.internal.params import Depends
|
||||
from nonebot.matcher import Matcher
|
||||
from nonebot.params import Command
|
||||
@@ -9,6 +10,7 @@ from nonebot_plugin_session import EventSession
|
||||
from nonebot_plugin_uninfo import Uninfo
|
||||
|
||||
from zhenxun.configs.config import Config
|
||||
from zhenxun.services import group_settings_service
|
||||
from zhenxun.utils.limiters import ConcurrencyLimiter, FreqLimiter, RateLimiter
|
||||
from zhenxun.utils.message import MessageUtils
|
||||
from zhenxun.utils.time_utils import TimeUtils
|
||||
@@ -249,6 +251,34 @@ def GetConfig(
|
||||
return Depends(dependency)
|
||||
|
||||
|
||||
def GetGroupConfig(model: type[Any]):
|
||||
"""
|
||||
依赖注入函数,用于获取并解析插件的分群配置。
|
||||
"""
|
||||
|
||||
async def dependency(matcher: Matcher, session: EventSession):
|
||||
"""
|
||||
实际的依赖注入逻辑。
|
||||
"""
|
||||
plugin_name = matcher.plugin_name
|
||||
group_id = session.id3 or session.id2
|
||||
|
||||
if not plugin_name:
|
||||
raise SkippedException("无法确定插件名称以获取配置")
|
||||
|
||||
if not group_id:
|
||||
try:
|
||||
return model()
|
||||
except Exception:
|
||||
raise SkippedException("在私聊中无法获取分群配置")
|
||||
|
||||
return await group_settings_service.get_all_for_plugin(
|
||||
group_id, plugin_name, parse_model=model
|
||||
)
|
||||
|
||||
return Depends(dependency)
|
||||
|
||||
|
||||
def CheckConfig(
|
||||
module: str | None = None,
|
||||
config: str | list[str] = "",
|
||||
|
||||
@@ -53,6 +53,8 @@ class CacheType(StrEnum):
|
||||
"""全局全部插件"""
|
||||
GROUPS = "GLOBAL_ALL_GROUPS"
|
||||
"""全局全部群组"""
|
||||
GROUP_PLUGIN_SETTINGS = "GROUP_PLUGIN_SETTINGS"
|
||||
"""插件分群配置"""
|
||||
USERS = "GLOBAL_ALL_USERS"
|
||||
"""全部用户"""
|
||||
BAN = "GLOBAL_ALL_BAN"
|
||||
|
||||
@@ -24,6 +24,7 @@ __all__ = [
|
||||
"_is_pydantic_type",
|
||||
"compat_computed_field",
|
||||
"dump_json_safely",
|
||||
"model_construct",
|
||||
"model_copy",
|
||||
"model_dump",
|
||||
"model_json_schema",
|
||||
@@ -45,6 +46,16 @@ def model_copy(
|
||||
return model.copy(update=update_dict, deep=deep)
|
||||
|
||||
|
||||
def model_construct(model_class: type[T], **kwargs: Any) -> T:
|
||||
"""
|
||||
Pydantic `model_construct` (v2) 与 `construct` (v1) 的兼容函数。
|
||||
"""
|
||||
if PYDANTIC_V2:
|
||||
return model_class.model_construct(**kwargs)
|
||||
else:
|
||||
return model_class.construct(**kwargs)
|
||||
|
||||
|
||||
def model_validate(model_class: type[T], obj: Any) -> T:
|
||||
"""
|
||||
Pydantic `model_validate` (v2) 与 `parse_obj` (v1) 的兼容函数。
|
||||
|
||||
Reference in New Issue
Block a user