diff --git a/__version__ b/__version__
index 9985c50b..b8025e04 100644
--- a/__version__
+++ b/__version__
@@ -1 +1 @@
-__version__: v0.2.3-5f361ff
+__version__: v0.2.3-f3e5c9e
diff --git a/zhenxun/builtin_plugins/admin/admin_watch.py b/zhenxun/builtin_plugins/admin/admin_watch.py
index 7fe7fdb5..45947b52 100644
--- a/zhenxun/builtin_plugins/admin/admin_watch.py
+++ b/zhenxun/builtin_plugins/admin/admin_watch.py
@@ -1,16 +1,18 @@
from nonebot import on_notice
-from nonebot.adapters.onebot.v11 import GroupAdminNoticeEvent
from nonebot.plugin import PluginMetadata
+from nonebot.adapters.onebot.v11 import GroupAdminNoticeEvent
-from zhenxun.configs.config import Config
-from zhenxun.configs.utils import PluginExtraData, RegisterConfig
-from zhenxun.models.level_user import LevelUser
from zhenxun.services.log import logger
+from zhenxun.configs.config import Config
from zhenxun.utils.enum import PluginType
+from zhenxun.utils.rules import notice_rule
+from zhenxun.models.level_user import LevelUser
+from zhenxun.configs.utils import RegisterConfig, PluginExtraData
__plugin_meta__ = PluginMetadata(
name="群管理员变动监测",
- description="检测群管理员变动, 添加与删除管理员默认权限, 当配置项 ADMIN_DEFAULT_AUTH 为空时, 不会添加管理员权限",
+ description="""检测群管理员变动, 添加与删除管理员默认权限,
+ 当配置项 ADMIN_DEFAULT_AUTH 为空时, 不会添加管理员权限""",
usage="",
extra=PluginExtraData(
author="HibiKier",
@@ -29,7 +31,7 @@ __plugin_meta__ = PluginMetadata(
)
-admin_notice = on_notice(priority=5)
+admin_notice = on_notice(priority=5, rule=notice_rule(GroupAdminNoticeEvent))
base_config = Config.get("admin_bot_manage")
@@ -52,7 +54,8 @@ async def _(event: GroupAdminNoticeEvent):
)
else:
logger.warning(
- f"配置项 MODULE: [admin_bot_manage] | KEY: [ADMIN_DEFAULT_AUTH] 为空"
+ "配置项 MODULE: [admin_bot_manage] |"
+ " KEY: [ADMIN_DEFAULT_AUTH] 为空"
)
elif event.sub_type == "unset":
await LevelUser.delete_level(str(event.user_id), str(event.group_id))
diff --git a/zhenxun/builtin_plugins/admin/group_member_update/__init__.py b/zhenxun/builtin_plugins/admin/group_member_update/__init__.py
index 2c9fbd21..72532b09 100644
--- a/zhenxun/builtin_plugins/admin/group_member_update/__init__.py
+++ b/zhenxun/builtin_plugins/admin/group_member_update/__init__.py
@@ -1,19 +1,19 @@
import nonebot
from nonebot import on_notice
from nonebot.adapters import Bot
-from nonebot.adapters.onebot.v11 import GroupIncreaseNoticeEvent
from nonebot.plugin import PluginMetadata
-from nonebot_plugin_alconna import Alconna, Arparma, on_alconna
-from nonebot_plugin_apscheduler import scheduler
from nonebot_plugin_session import EventSession
+from nonebot_plugin_apscheduler import scheduler
+from nonebot_plugin_alconna import Alconna, Arparma, on_alconna
+from nonebot.adapters.onebot.v11 import GroupIncreaseNoticeEvent
-from zhenxun.configs.config import BotConfig
-from zhenxun.configs.utils import PluginExtraData
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
+from zhenxun.configs.config import BotConfig
from zhenxun.utils.message import MessageUtils
from zhenxun.utils.platform import PlatformUtils
-from zhenxun.utils.rules import admin_check, ensure_group
+from zhenxun.configs.utils import PluginExtraData
+from zhenxun.utils.rules import admin_check, notice_rule, ensure_group
from ._data_source import MemberUpdateManage
@@ -42,7 +42,7 @@ _matcher = on_alconna(
)
-_notice = on_notice(priority=1, block=False)
+_notice = on_notice(priority=1, block=False, rule=notice_rule(GroupIncreaseNoticeEvent))
@_matcher.handle()
diff --git a/zhenxun/builtin_plugins/hooks/ban_hook.py b/zhenxun/builtin_plugins/hooks/ban_hook.py
index 675f04c6..b0d3d4d6 100644
--- a/zhenxun/builtin_plugins/hooks/ban_hook.py
+++ b/zhenxun/builtin_plugins/hooks/ban_hook.py
@@ -1,19 +1,19 @@
import logging
-from nonebot.adapters import Bot, Event
-from nonebot.exception import IgnoredException
-from nonebot.matcher import Matcher
-from nonebot.message import run_preprocessor
from nonebot.typing import T_State
+from nonebot.matcher import Matcher
from nonebot_plugin_alconna import At
+from nonebot.adapters import Bot, Event
+from nonebot.message import run_preprocessor
+from nonebot.exception import IgnoredException
from nonebot_plugin_session import EventSession
from zhenxun.configs.config import Config
+from zhenxun.utils.enum import PluginType
+from zhenxun.utils.utils import FreqLimiter
+from zhenxun.utils.message import MessageUtils
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
Config.add_plugin_config(
"hook",
@@ -58,12 +58,12 @@ async def _(
else:
time = abs(int(time))
if time < 60:
- time_str = str(time) + " 秒"
+ time_str = f"{time!s} 秒"
else:
minute = int(time / 60)
if minute > 60:
- hours = int(minute / 60)
- minute = minute % 60
+ hours = minute // 60
+ minute %= 60
time_str = f"{hours} 小时 {minute}分钟"
else:
time_str = f"{minute} 分钟"
diff --git a/zhenxun/builtin_plugins/platform/qq/group_handle.py b/zhenxun/builtin_plugins/platform/qq/group_handle.py
index 2e10b79a..d5bea4e2 100644
--- a/zhenxun/builtin_plugins/platform/qq/group_handle.py
+++ b/zhenxun/builtin_plugins/platform/qq/group_handle.py
@@ -18,6 +18,7 @@ from nonebot.adapters.onebot.v12 import (
)
from zhenxun.services.log import logger
+from zhenxun.utils.rules import notice_rule
from zhenxun.utils.utils import FreqLimiter
from zhenxun.utils.message import MessageUtils
from zhenxun.models.fg_request import FgRequest
@@ -95,9 +96,17 @@ limit_cd = base_config.get("welcome_msg_cd")
_flmt = FreqLimiter(limit_cd)
-group_increase_handle = on_notice(priority=1, block=False)
+group_increase_handle = on_notice(
+ priority=1,
+ block=False,
+ rule=notice_rule([GroupIncreaseNoticeEvent, GroupMemberIncreaseEvent]),
+)
"""群员增加处理"""
-group_decrease_handle = on_notice(priority=1, block=False)
+group_decrease_handle = on_notice(
+ priority=1,
+ block=False,
+ rule=notice_rule([GroupDecreaseNoticeEvent, GroupMemberDecreaseEvent]),
+)
"""群员减少处理"""
add_group = on_request(priority=1, block=False)
"""加群同意请求"""
diff --git a/zhenxun/builtin_plugins/platform/qq/group_handle/__init__.py b/zhenxun/builtin_plugins/platform/qq/group_handle/__init__.py
index 8e2ac040..85c75b4a 100644
--- a/zhenxun/builtin_plugins/platform/qq/group_handle/__init__.py
+++ b/zhenxun/builtin_plugins/platform/qq/group_handle/__init__.py
@@ -11,6 +11,7 @@ from nonebot.adapters.onebot.v12 import (
)
from zhenxun.utils.enum import PluginType
+from zhenxun.utils.rules import notice_rule
from zhenxun.utils.platform import PlatformUtils
from zhenxun.utils.common_utils import CommonUtils
from zhenxun.configs.config import Config, BotConfig
@@ -82,9 +83,17 @@ base_config = Config.get("invite_manager")
limit_cd = base_config.get("welcome_msg_cd")
-group_increase_handle = on_notice(priority=1, block=False)
+group_increase_handle = on_notice(
+ priority=1,
+ block=False,
+ rule=notice_rule([GroupIncreaseNoticeEvent, GroupMemberIncreaseEvent]),
+)
"""群员增加处理"""
-group_decrease_handle = on_notice(priority=1, block=False)
+group_decrease_handle = on_notice(
+ priority=1,
+ block=False,
+ rule=notice_rule([GroupMemberDecreaseEvent, GroupMemberIncreaseEvent]),
+)
"""群员减少处理"""
add_group = on_request(priority=1, block=False)
"""加群同意请求"""
diff --git a/zhenxun/utils/rules.py b/zhenxun/utils/rules.py
index f3381a48..1be97ed1 100644
--- a/zhenxun/utils/rules.py
+++ b/zhenxun/utils/rules.py
@@ -1,5 +1,5 @@
-from nonebot.adapters import Bot, Event
from nonebot.internal.rule import Rule
+from nonebot.adapters import Bot, Event
from nonebot.permission import SUPERUSER
from nonebot_plugin_session import EventSession, SessionLevel
@@ -24,7 +24,7 @@ def admin_check(a: int | str, key: str | None = None) -> Rule:
return True
if session.id1 and session.id2:
level = a
- if type(a) == str and key:
+ if isinstance(a, str) and key:
level = Config.get_config(a, key)
if level is not None:
return bool(
@@ -59,3 +59,26 @@ def ensure_private(session: EventSession) -> bool:
bool: bool
"""
return not session.id3 and not session.id2
+
+
+def notice_rule(event_type: type | list[type]) -> Rule:
+ """
+ Notice限制
+
+ 参数:
+ event_type: Event类型
+
+ 返回:
+ Rule: Rule
+ """
+
+ async def _rule(event: Event) -> bool:
+ if isinstance(event_type, list):
+ for et in event_type:
+ if isinstance(event, et):
+ return True
+ else:
+ return isinstance(event, event_type)
+ return False
+
+ return Rule(_rule)