🎨 修改限制配置文件key (#1685)

This commit is contained in:
HibiKier 2024-10-06 18:16:35 +08:00 committed by GitHub
parent 6852363a03
commit 856976526f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 27 additions and 30 deletions

View File

@ -88,7 +88,7 @@ class LimitManage:
@classmethod @classmethod
async def check( async def check(
cls, cls,
module_path: str, module: str,
user_id: str, user_id: str,
group_id: str | None, group_id: str | None,
channel_id: str | None, channel_id: str | None,
@ -106,11 +106,11 @@ class LimitManage:
异常: 异常:
IgnoredException: IgnoredException IgnoredException: IgnoredException
""" """
if limit_model := cls.cd_limit.get(module_path): if limit_model := cls.cd_limit.get(module):
await cls.__check(limit_model, user_id, group_id, channel_id, session) await cls.__check(limit_model, user_id, group_id, channel_id, session)
if limit_model := cls.block_limit.get(module_path): if limit_model := cls.block_limit.get(module):
await cls.__check(limit_model, user_id, group_id, channel_id, session) await cls.__check(limit_model, user_id, group_id, channel_id, session)
if limit_model := cls.count_limit.get(module_path): if limit_model := cls.count_limit.get(module):
await cls.__check(limit_model, user_id, group_id, channel_id, session) await cls.__check(limit_model, user_id, group_id, channel_id, session)
@classmethod @classmethod
@ -298,7 +298,7 @@ class AuthChecker:
LimitManage.add_limit(limit) LimitManage.add_limit(limit)
if user_id: if user_id:
await LimitManage.check( await LimitManage.check(
plugin.module_path, user_id, group_id, channel_id, session plugin.module, user_id, group_id, channel_id, session
) )
async def auth_plugin( async def auth_plugin(

View File

@ -1,5 +1,3 @@
import logging
from nonebot.typing import T_State from nonebot.typing import T_State
from nonebot.matcher import Matcher from nonebot.matcher import Matcher
from nonebot_plugin_alconna import At from nonebot_plugin_alconna import At
@ -8,6 +6,7 @@ from nonebot.message import run_preprocessor
from nonebot.exception import IgnoredException from nonebot.exception import IgnoredException
from nonebot_plugin_session import EventSession from nonebot_plugin_session import EventSession
from zhenxun.services.log import logger
from zhenxun.configs.config import Config from zhenxun.configs.config import Config
from zhenxun.utils.enum import PluginType from zhenxun.utils.enum import PluginType
from zhenxun.utils.utils import FreqLimiter from zhenxun.utils.utils import FreqLimiter
@ -41,11 +40,11 @@ async def _(
if user_id in bot.config.superusers: if user_id in bot.config.superusers:
return return
if await BanConsole.is_ban(None, group_id): if await BanConsole.is_ban(None, group_id):
logging.debug("群组处于黑名单中...", "ban_hook") logger.debug("群组处于黑名单中...", "ban_hook")
raise IgnoredException("群组处于黑名单中...") raise IgnoredException("群组处于黑名单中...")
if g := await GroupConsole.get_group(group_id): if g := await GroupConsole.get_group(group_id):
if g.level < 0: if g.level < 0:
logging.debug("群黑名单, 群权限-1...", "ban_hook") logger.debug("群黑名单, 群权限-1...", "ban_hook")
raise IgnoredException("群黑名单, 群权限-1..") raise IgnoredException("群黑名单, 群权限-1..")
if user_id: if user_id:
ban_result = Config.get_config("hook", "BAN_RESULT") ban_result = Config.get_config("hook", "BAN_RESULT")
@ -75,5 +74,5 @@ async def _(
f"{ban_result}\n在..在 {time_str} 后才会理你喔", f"{ban_result}\n在..在 {time_str} 后才会理你喔",
] ]
).send() ).send()
logging.debug("用户处于黑名单中...", "ban_hook") logger.debug("用户处于黑名单中...", "ban_hook")
raise IgnoredException("用户处于黑名单中...") raise IgnoredException("用户处于黑名单中...")

View File

@ -73,7 +73,7 @@ class Manager:
def add( def add(
self, self,
module_path: str, module: str,
data: BaseBlock | PluginCdBlock | PluginCountBlock | PluginLimit, data: BaseBlock | PluginCdBlock | PluginCountBlock | PluginLimit,
): ):
"""添加限制""" """添加限制"""
@ -106,20 +106,20 @@ class Manager:
max_count=data.max_count, max_count=data.max_count,
) )
if isinstance(data, PluginCdBlock): if isinstance(data, PluginCdBlock):
self.cd_data[module_path] = data self.cd_data[module] = data
elif isinstance(data, PluginCountBlock): elif isinstance(data, PluginCountBlock):
self.count_data[module_path] = data self.count_data[module] = data
elif isinstance(data, BaseBlock): elif isinstance(data, BaseBlock):
self.block_data[module_path] = data self.block_data[module] = data
def exist(self, module_path: str, type: PluginLimitType): def exist(self, module: str, type: PluginLimitType):
"""是否存在""" """是否存在"""
if type == PluginLimitType.CD: if type == PluginLimitType.CD:
return module_path in self.cd_data return module in self.cd_data
elif type == PluginLimitType.BLOCK: elif type == PluginLimitType.BLOCK:
return module_path in self.block_data return module in self.block_data
elif type == PluginLimitType.COUNT: elif type == PluginLimitType.COUNT:
return module_path in self.count_data return module in self.count_data
def init(self): def init(self):
if not self.cd_file.exists(): if not self.cd_file.exists():
@ -270,10 +270,10 @@ class Manager:
if not db_data: if not db_data:
return ( return (
PluginLimit( PluginLimit(
module=k.split(".")[-1], module=k,
module_path=k, module_path=module2plugin[k].module_path,
limit_type=limit_type, limit_type=limit_type,
plugin=module2plugin.get(k), plugin=module2plugin[k],
cd=getattr(limit, "cd", None), cd=getattr(limit, "cd", None),
max_count=getattr(limit, "max_count", None), max_count=getattr(limit, "max_count", None),
status=limit.status, status=limit.status,
@ -329,12 +329,10 @@ class Manager:
] ]
if data := self.__get_file_data(limit_type): if data := self.__get_file_data(limit_type):
db_type_limit_modules = [ db_type_limit_modules = [
(limit.module_path, limit.id) for limit in db_type_limits (limit.module, limit.id) for limit in db_type_limits
] ]
delete_list.extend( delete_list.extend(
id id for module, id in db_type_limit_modules if module not in data.keys()
for module_path, id in db_type_limit_modules
if module_path not in data.keys()
) )
for k, v in data.items(): for k, v in data.items():
if not module2plugin.get(k): if not module2plugin.get(k):
@ -343,7 +341,7 @@ class Manager:
f"插件模块 {k} 未加载,已过滤当前 {v._type} 限制..." f"插件模块 {k} 未加载,已过滤当前 {v._type} 限制..."
) )
continue continue
db_data = [limit for limit in db_type_limits if limit.module_path == k] db_data = [limit for limit in db_type_limits if limit.module == k]
db_data, is_create = self.__set_data( db_data, is_create = self.__set_data(
k, db_data[0] if db_data else None, v, limit_type, module2plugin k, db_data[0] if db_data else None, v, limit_type, module2plugin
) )
@ -369,8 +367,8 @@ class Manager:
+ list(self.block_data.keys()) + list(self.block_data.keys())
+ list(self.count_data.keys()) + list(self.count_data.keys())
) )
plugins = await PluginInfo.get_plugins(module_path__in=modules) plugins = await PluginInfo.get_plugins(module__in=modules)
module2plugin = {p.module_path: p for p in plugins} module2plugin = {p.module: p for p in plugins}
create_list, update_list, delete_list = self.__set_db_limits( create_list, update_list, delete_list = self.__set_db_limits(
db_limits, module2plugin, PluginLimitType.CD db_limits, module2plugin, PluginLimitType.CD
) )

View File

@ -55,7 +55,7 @@ class GroupManager:
block_plugin = "" block_plugin = ""
if plugin_list := await PluginInfo.filter(default_status=False).all(): if plugin_list := await PluginInfo.filter(default_status=False).all():
for plugin in plugin_list: for plugin in plugin_list:
block_plugin += f"{plugin.module}," block_plugin += f"<{plugin.module},"
group_info = await bot.get_group_info(group_id=group_id) group_info = await bot.get_group_info(group_id=group_id)
await GroupConsole.create( await GroupConsole.create(
group_id=group_info["group_id"], group_id=group_info["group_id"],

View File

@ -51,7 +51,7 @@ class BanConsole(Model):
else await cls.get_or_none(user_id=user_id, group_id__isnull=True) else await cls.get_or_none(user_id=user_id, group_id__isnull=True)
) )
else: else:
return await cls.get_or_none(user_id=user_id, group_id=group_id) return await cls.get_or_none(user_id="", group_id=group_id)
@classmethod @classmethod
async def check_ban_level( async def check_ban_level(