From 28b74155817cab40e4a0e015ba41ebb868f1d56a Mon Sep 17 00:00:00 2001 From: HibiKier <775757368@qq.com> Date: Sat, 24 Aug 2024 13:25:34 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/group_member_update/_data_source.py | 5 +++- .../admin/plugin_switch/__init__.py | 2 +- .../builtin_plugins/hooks/_auth_checker.py | 4 ++- zhenxun/builtin_plugins/hooks/auth_hook.py | 2 +- zhenxun/builtin_plugins/hooks/ban_hook.py | 13 +++++++-- zhenxun/builtin_plugins/hooks/chkdsk_hook.py | 13 +++++++-- .../platform/qq/group_handle.py | 22 ++++++++------- zhenxun/builtin_plugins/sign_in/utils.py | 6 +++-- .../statistics/_data_source.py | 3 ++- .../web_ui/__init__.py | 0 .../web_ui/api/__init__.py | 0 .../web_ui/api/logs/__init__.py | 0 .../web_ui/api/logs/log_manager.py | 0 .../web_ui/api/logs/logs.py | 0 .../web_ui/api/tabs/__init__.py | 0 .../web_ui/api/tabs/database/__init__.py | 0 .../web_ui/api/tabs/database/models/model.py | 0 .../api/tabs/database/models/sql_log.py | 0 .../web_ui/api/tabs/main/__init__.py | 0 .../web_ui/api/tabs/main/data_source.py | 0 .../web_ui/api/tabs/main/model.py | 0 .../web_ui/api/tabs/manage/__init__.py | 27 ++++++++----------- .../web_ui/api/tabs/manage/chat.py | 0 .../web_ui/api/tabs/manage/model.py | 0 .../web_ui/api/tabs/plugin_manage/__init__.py | 0 .../web_ui/api/tabs/plugin_manage/model.py | 0 .../web_ui/api/tabs/system/__init__.py | 0 .../web_ui/api/tabs/system/model.py | 0 .../web_ui/auth/__init__.py | 0 .../web_ui/base_model.py | 0 .../web_ui/config.py | 0 .../web_ui/public/__init__.py | 0 .../web_ui/public/config.py | 0 .../web_ui/public/data_source.py | 0 .../web_ui/utils.py | 0 35 files changed, 60 insertions(+), 37 deletions(-) rename zhenxun/{plugins => builtin_plugins}/web_ui/__init__.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/__init__.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/logs/__init__.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/logs/log_manager.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/logs/logs.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/tabs/__init__.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/tabs/database/__init__.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/tabs/database/models/model.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/tabs/database/models/sql_log.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/tabs/main/__init__.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/tabs/main/data_source.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/tabs/main/model.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/tabs/manage/__init__.py (95%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/tabs/manage/chat.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/tabs/manage/model.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/tabs/plugin_manage/__init__.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/tabs/plugin_manage/model.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/tabs/system/__init__.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/api/tabs/system/model.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/auth/__init__.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/base_model.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/config.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/public/__init__.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/public/config.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/public/data_source.py (100%) rename zhenxun/{plugins => builtin_plugins}/web_ui/utils.py (100%) diff --git a/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py b/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py index a24741cd..7bda88e7 100644 --- a/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py +++ b/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py @@ -102,7 +102,10 @@ class MemberUpdateManage: if role in ["owner", "admin"] and not await LevelUser.is_group_flag( user_id, group_id ): - await LevelUser.set_level(user_id, group_id, default_auth) + if role == "owner": + await LevelUser.set_level(user_id, group_id, default_auth + 1) + else: + await LevelUser.set_level(user_id, group_id, default_auth) if user_id in bot.config.superusers: await LevelUser.set_level(user_id, group_id, 9) join_time = datetime.strptime( diff --git a/zhenxun/builtin_plugins/admin/plugin_switch/__init__.py b/zhenxun/builtin_plugins/admin/plugin_switch/__init__.py index 76b10259..0dfb68af 100644 --- a/zhenxun/builtin_plugins/admin/plugin_switch/__init__.py +++ b/zhenxun/builtin_plugins/admin/plugin_switch/__init__.py @@ -58,7 +58,7 @@ __plugin_meta__ = PluginMetadata( 关闭群被动早晚安 关闭群被动早晚安 -g 12355555 - 开启/关闭所有群被动 -[g ?[group_id]] + 开启/关闭所有群被动 ?[-g [group_id]] 私聊中: 开启/关闭全局或指定群组被动状态 示例: 开启所有群被动: 开启全局所有被动 diff --git a/zhenxun/builtin_plugins/hooks/_auth_checker.py b/zhenxun/builtin_plugins/hooks/_auth_checker.py index 83637cd3..efffa236 100644 --- a/zhenxun/builtin_plugins/hooks/_auth_checker.py +++ b/zhenxun/builtin_plugins/hooks/_auth_checker.py @@ -198,6 +198,8 @@ class AuthChecker: return False if not self._flmt_s.check(sid): return False + if plugin.module == "ai": + return False return True async def auth( @@ -392,7 +394,7 @@ class AuthChecker: if not plugin.status and plugin.block_type == BlockType.ALL: """全局状态""" if group_id: - if await GroupConsole.is_super_group(group_id, channel_id): + if await GroupConsole.is_super_group(group_id): raise IsSuperuserException() logger.debug( f"{plugin.name}({plugin.module}) 全局未开启此功能...", diff --git a/zhenxun/builtin_plugins/hooks/auth_hook.py b/zhenxun/builtin_plugins/hooks/auth_hook.py index 4f030d8c..9df91a4d 100644 --- a/zhenxun/builtin_plugins/hooks/auth_hook.py +++ b/zhenxun/builtin_plugins/hooks/auth_hook.py @@ -1,6 +1,6 @@ from typing import Optional -from nonebot.adapters.onebot.v11 import Bot, Event, MessageEvent +from nonebot.adapters.onebot.v11 import Bot, Event from nonebot.matcher import Matcher from nonebot.message import run_postprocessor, run_preprocessor from nonebot_plugin_alconna import UniMsg diff --git a/zhenxun/builtin_plugins/hooks/ban_hook.py b/zhenxun/builtin_plugins/hooks/ban_hook.py index b4923eff..675f04c6 100644 --- a/zhenxun/builtin_plugins/hooks/ban_hook.py +++ b/zhenxun/builtin_plugins/hooks/ban_hook.py @@ -1,3 +1,5 @@ +import logging + from nonebot.adapters import Bot, Event from nonebot.exception import IgnoredException from nonebot.matcher import Matcher @@ -8,6 +10,7 @@ from nonebot_plugin_session import EventSession from zhenxun.configs.config import Config from zhenxun.models.ban_console import BanConsole +from zhenxun.models.group_console import GroupConsole from zhenxun.utils.enum import PluginType from zhenxun.utils.message import MessageUtils from zhenxun.utils.utils import FreqLimiter @@ -30,7 +33,7 @@ async def _( if plugin := matcher.plugin: if metadata := plugin.metadata: extra = metadata.extra - if extra.get("plugin_type") == PluginType.HIDDEN: + if extra.get("plugin_type") in [PluginType.HIDDEN, PluginType.DEPENDANT]: return user_id = session.id1 group_id = session.id3 or session.id2 @@ -38,7 +41,12 @@ async def _( if user_id in bot.config.superusers: return if await BanConsole.is_ban(None, group_id): + logging.debug("群组处于黑名单中...", "ban_hook") raise IgnoredException("群组处于黑名单中...") + if g := await GroupConsole.get_group(group_id): + if g.level < 0: + logging.debug("群黑名单, 群权限-1...", "ban_hook") + raise IgnoredException("群黑名单, 群权限-1..") if user_id: ban_result = Config.get_config("hook", "BAN_RESULT") if user_id in bot.config.superusers: @@ -59,7 +67,7 @@ async def _( time_str = f"{hours} 小时 {minute}分钟" else: time_str = f"{minute} 分钟" - if ban_result and _flmt.check(user_id): + if time != -1 and ban_result and _flmt.check(user_id): _flmt.start_cd(user_id) await MessageUtils.build_message( [ @@ -67,4 +75,5 @@ async def _( f"{ban_result}\n在..在 {time_str} 后才会理你喔", ] ).send() + logging.debug("用户处于黑名单中...", "ban_hook") raise IgnoredException("用户处于黑名单中...") diff --git a/zhenxun/builtin_plugins/hooks/chkdsk_hook.py b/zhenxun/builtin_plugins/hooks/chkdsk_hook.py index 51246515..5fb66a09 100644 --- a/zhenxun/builtin_plugins/hooks/chkdsk_hook.py +++ b/zhenxun/builtin_plugins/hooks/chkdsk_hook.py @@ -1,6 +1,7 @@ import time from collections import defaultdict +from nonebot.adapters import Event from nonebot.adapters.onebot.v11 import Bot from nonebot.exception import IgnoredException from nonebot.matcher import Matcher @@ -63,16 +64,24 @@ _blmt = BanCheckLimiter( # 恶意触发命令检测 @run_preprocessor -async def _(matcher: Matcher, bot: Bot, session: EventSession, state: T_State): +async def _( + matcher: Matcher, bot: Bot, session: EventSession, state: T_State, event: Event +): module = None if plugin := matcher.plugin: module = plugin.module_name if metadata := plugin.metadata: extra = metadata.extra - if extra.get("plugin_type") in [PluginType.HIDDEN, PluginType.DEPENDANT]: + if extra.get("plugin_type") in [ + PluginType.HIDDEN, + PluginType.DEPENDANT, + PluginType.ADMIN, + ]: return else: return + if matcher.type == "notice": + return user_id = session.id1 group_id = session.id3 or session.id2 malicious_ban_time = Config.get_config("hook", "MALICIOUS_BAN_TIME") diff --git a/zhenxun/builtin_plugins/platform/qq/group_handle.py b/zhenxun/builtin_plugins/platform/qq/group_handle.py index 262a67f1..8fab7ded 100644 --- a/zhenxun/builtin_plugins/platform/qq/group_handle.py +++ b/zhenxun/builtin_plugins/platform/qq/group_handle.py @@ -231,17 +231,19 @@ async def _(bot: Bot, event: GroupIncreaseNoticeEvent | GroupMemberIncreaseEvent """群欢迎消息""" _flmt.start_cd(group_id) path = DATA_PATH / "welcome_message" / "qq" / f"{group_id}" - data = json.load((path / "text.json").open(encoding="utf-8")) - message = data["message"] - msg_split = re.split(r"\[image:\d+\]", message) + file = path / "text.json" msg_list = [] - if data["at"]: - msg_list.append(At(flag="user", target=user_id)) - for i, text in enumerate(msg_split): - msg_list.append(text) - img_file = path / f"{i}.png" - if img_file.exists(): - msg_list.append(img_file) + if file.exists(): + data = json.load((path / "text.json").open(encoding="utf-8")) + message = data["message"] + msg_split = re.split(r"\[image:\d+\]", message) + if data["at"]: + msg_list.append(At(flag="user", target=user_id)) + for i, text in enumerate(msg_split): + msg_list.append(text) + img_file = path / f"{i}.png" + if img_file.exists(): + msg_list.append(img_file) if not TaskInfo.is_block("group_welcome", group_id): logger.info(f"发送群欢迎消息...", "入群检测", group_id=group_id) if msg_list: diff --git a/zhenxun/builtin_plugins/sign_in/utils.py b/zhenxun/builtin_plugins/sign_in/utils.py index 177b1da5..76b4418f 100644 --- a/zhenxun/builtin_plugins/sign_in/utils.py +++ b/zhenxun/builtin_plugins/sign_in/utils.py @@ -429,7 +429,9 @@ async def _generate_html_card( "process": process, "date": str(now.replace(microsecond=0)), } + _type = "sign" if is_card_view: + _type = "view" value_list = ( await SignUser.annotate() .order_by("-impression") @@ -451,5 +453,5 @@ async def _generate_html_card( ) image = BuildImage.open(pic) date = now.date() - await image.save(SIGN_TODAY_CARD_PATH / f"{user.user_id}_sign_{date}.png") - return IMAGE_PATH / "sign" / "today_card" / f"{user.user_id}_sign_{date}.png" + await image.save(SIGN_TODAY_CARD_PATH / f"{user.user_id}_{_type}_{date}.png") + return IMAGE_PATH / "sign" / "today_card" / f"{user.user_id}_{_type}_{date}.png" diff --git a/zhenxun/builtin_plugins/statistics/_data_source.py b/zhenxun/builtin_plugins/statistics/_data_source.py index e83707b1..161dafc6 100644 --- a/zhenxun/builtin_plugins/statistics/_data_source.py +++ b/zhenxun/builtin_plugins/statistics/_data_source.py @@ -117,7 +117,8 @@ class StatisticsManage: mat = BuildMat(MatType.BARH) module2count = {x[0]: x[1] for x in data_list} plugin_info = await PluginInfo.filter( - module__in=module2count.keys(), plugin_type=PluginType.NORMAL + module__in=module2count.keys(), + plugin_type=PluginType.NORMAL, ).all() x_index = [] data = [] diff --git a/zhenxun/plugins/web_ui/__init__.py b/zhenxun/builtin_plugins/web_ui/__init__.py similarity index 100% rename from zhenxun/plugins/web_ui/__init__.py rename to zhenxun/builtin_plugins/web_ui/__init__.py diff --git a/zhenxun/plugins/web_ui/api/__init__.py b/zhenxun/builtin_plugins/web_ui/api/__init__.py similarity index 100% rename from zhenxun/plugins/web_ui/api/__init__.py rename to zhenxun/builtin_plugins/web_ui/api/__init__.py diff --git a/zhenxun/plugins/web_ui/api/logs/__init__.py b/zhenxun/builtin_plugins/web_ui/api/logs/__init__.py similarity index 100% rename from zhenxun/plugins/web_ui/api/logs/__init__.py rename to zhenxun/builtin_plugins/web_ui/api/logs/__init__.py diff --git a/zhenxun/plugins/web_ui/api/logs/log_manager.py b/zhenxun/builtin_plugins/web_ui/api/logs/log_manager.py similarity index 100% rename from zhenxun/plugins/web_ui/api/logs/log_manager.py rename to zhenxun/builtin_plugins/web_ui/api/logs/log_manager.py diff --git a/zhenxun/plugins/web_ui/api/logs/logs.py b/zhenxun/builtin_plugins/web_ui/api/logs/logs.py similarity index 100% rename from zhenxun/plugins/web_ui/api/logs/logs.py rename to zhenxun/builtin_plugins/web_ui/api/logs/logs.py diff --git a/zhenxun/plugins/web_ui/api/tabs/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/__init__.py similarity index 100% rename from zhenxun/plugins/web_ui/api/tabs/__init__.py rename to zhenxun/builtin_plugins/web_ui/api/tabs/__init__.py diff --git a/zhenxun/plugins/web_ui/api/tabs/database/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/database/__init__.py similarity index 100% rename from zhenxun/plugins/web_ui/api/tabs/database/__init__.py rename to zhenxun/builtin_plugins/web_ui/api/tabs/database/__init__.py diff --git a/zhenxun/plugins/web_ui/api/tabs/database/models/model.py b/zhenxun/builtin_plugins/web_ui/api/tabs/database/models/model.py similarity index 100% rename from zhenxun/plugins/web_ui/api/tabs/database/models/model.py rename to zhenxun/builtin_plugins/web_ui/api/tabs/database/models/model.py diff --git a/zhenxun/plugins/web_ui/api/tabs/database/models/sql_log.py b/zhenxun/builtin_plugins/web_ui/api/tabs/database/models/sql_log.py similarity index 100% rename from zhenxun/plugins/web_ui/api/tabs/database/models/sql_log.py rename to zhenxun/builtin_plugins/web_ui/api/tabs/database/models/sql_log.py diff --git a/zhenxun/plugins/web_ui/api/tabs/main/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/main/__init__.py similarity index 100% rename from zhenxun/plugins/web_ui/api/tabs/main/__init__.py rename to zhenxun/builtin_plugins/web_ui/api/tabs/main/__init__.py diff --git a/zhenxun/plugins/web_ui/api/tabs/main/data_source.py b/zhenxun/builtin_plugins/web_ui/api/tabs/main/data_source.py similarity index 100% rename from zhenxun/plugins/web_ui/api/tabs/main/data_source.py rename to zhenxun/builtin_plugins/web_ui/api/tabs/main/data_source.py diff --git a/zhenxun/plugins/web_ui/api/tabs/main/model.py b/zhenxun/builtin_plugins/web_ui/api/tabs/main/model.py similarity index 100% rename from zhenxun/plugins/web_ui/api/tabs/main/model.py rename to zhenxun/builtin_plugins/web_ui/api/tabs/main/model.py diff --git a/zhenxun/plugins/web_ui/api/tabs/manage/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/manage/__init__.py similarity index 95% rename from zhenxun/plugins/web_ui/api/tabs/manage/__init__.py rename to zhenxun/builtin_plugins/web_ui/api/tabs/manage/__init__.py index 4f545200..2f502762 100644 --- a/zhenxun/plugins/web_ui/api/tabs/manage/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/manage/__init__.py @@ -227,22 +227,17 @@ async def _(parma: HandleRequest) -> Result: if bot_id not in nonebot.get_bots(): return Result.warning_("指定Bot未连接...") if req := await FgRequest.get_or_none(id=parma.id): - if group := await GroupConsole.get_group(group_id=req.group_id): - group.group_flag = 1 - await group.save(update_fields=["group_flag"]) - else: - group_info = await bots[bot_id].get_group_info( - group_id=req.group_id - ) - await GroupConsole.update_or_create( - group_id=str(group_info["group_id"]), - defaults={ - "group_name": group_info["group_name"], - "max_member_count": group_info["max_member_count"], - "member_count": group_info["member_count"], - "group_flag": 1, - }, - ) + if req.request_type == RequestType.GROUP: + if group := await GroupConsole.get_group(group_id=req.group_id): + group.group_flag = 1 + await group.save(update_fields=["group_flag"]) + else: + await GroupConsole.update_or_create( + group_id=req.group_id, + defaults={ + "group_flag": 1, + }, + ) else: return Result.warning_("未找到此Id请求...") try: diff --git a/zhenxun/plugins/web_ui/api/tabs/manage/chat.py b/zhenxun/builtin_plugins/web_ui/api/tabs/manage/chat.py similarity index 100% rename from zhenxun/plugins/web_ui/api/tabs/manage/chat.py rename to zhenxun/builtin_plugins/web_ui/api/tabs/manage/chat.py diff --git a/zhenxun/plugins/web_ui/api/tabs/manage/model.py b/zhenxun/builtin_plugins/web_ui/api/tabs/manage/model.py similarity index 100% rename from zhenxun/plugins/web_ui/api/tabs/manage/model.py rename to zhenxun/builtin_plugins/web_ui/api/tabs/manage/model.py diff --git a/zhenxun/plugins/web_ui/api/tabs/plugin_manage/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/__init__.py similarity index 100% rename from zhenxun/plugins/web_ui/api/tabs/plugin_manage/__init__.py rename to zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/__init__.py diff --git a/zhenxun/plugins/web_ui/api/tabs/plugin_manage/model.py b/zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/model.py similarity index 100% rename from zhenxun/plugins/web_ui/api/tabs/plugin_manage/model.py rename to zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/model.py diff --git a/zhenxun/plugins/web_ui/api/tabs/system/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/system/__init__.py similarity index 100% rename from zhenxun/plugins/web_ui/api/tabs/system/__init__.py rename to zhenxun/builtin_plugins/web_ui/api/tabs/system/__init__.py diff --git a/zhenxun/plugins/web_ui/api/tabs/system/model.py b/zhenxun/builtin_plugins/web_ui/api/tabs/system/model.py similarity index 100% rename from zhenxun/plugins/web_ui/api/tabs/system/model.py rename to zhenxun/builtin_plugins/web_ui/api/tabs/system/model.py diff --git a/zhenxun/plugins/web_ui/auth/__init__.py b/zhenxun/builtin_plugins/web_ui/auth/__init__.py similarity index 100% rename from zhenxun/plugins/web_ui/auth/__init__.py rename to zhenxun/builtin_plugins/web_ui/auth/__init__.py diff --git a/zhenxun/plugins/web_ui/base_model.py b/zhenxun/builtin_plugins/web_ui/base_model.py similarity index 100% rename from zhenxun/plugins/web_ui/base_model.py rename to zhenxun/builtin_plugins/web_ui/base_model.py diff --git a/zhenxun/plugins/web_ui/config.py b/zhenxun/builtin_plugins/web_ui/config.py similarity index 100% rename from zhenxun/plugins/web_ui/config.py rename to zhenxun/builtin_plugins/web_ui/config.py diff --git a/zhenxun/plugins/web_ui/public/__init__.py b/zhenxun/builtin_plugins/web_ui/public/__init__.py similarity index 100% rename from zhenxun/plugins/web_ui/public/__init__.py rename to zhenxun/builtin_plugins/web_ui/public/__init__.py diff --git a/zhenxun/plugins/web_ui/public/config.py b/zhenxun/builtin_plugins/web_ui/public/config.py similarity index 100% rename from zhenxun/plugins/web_ui/public/config.py rename to zhenxun/builtin_plugins/web_ui/public/config.py diff --git a/zhenxun/plugins/web_ui/public/data_source.py b/zhenxun/builtin_plugins/web_ui/public/data_source.py similarity index 100% rename from zhenxun/plugins/web_ui/public/data_source.py rename to zhenxun/builtin_plugins/web_ui/public/data_source.py diff --git a/zhenxun/plugins/web_ui/utils.py b/zhenxun/builtin_plugins/web_ui/utils.py similarity index 100% rename from zhenxun/plugins/web_ui/utils.py rename to zhenxun/builtin_plugins/web_ui/utils.py