mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 06:12:53 +08:00
🎨 修改限制配置文件key (#1685)
This commit is contained in:
parent
6852363a03
commit
856976526f
@ -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(
|
||||||
|
|||||||
@ -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("用户处于黑名单中...")
|
||||||
|
|||||||
@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
@ -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"],
|
||||||
|
|||||||
@ -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(
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user