From 4846d32e2e480ed516443e135b2d8a0f33dadac9 Mon Sep 17 00:00:00 2001 From: felinae98 <731499577@qq.com> Date: Thu, 8 Jun 2023 22:30:17 +0800 Subject: [PATCH] :recycle: extract out permission --- nonebot_bison/config_manager/__init__.py | 18 +++++++++++++----- nonebot_bison/config_manager/utils.py | 12 ++++++++++++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/nonebot_bison/config_manager/__init__.py b/nonebot_bison/config_manager/__init__.py index 06b4235..051ecdd 100644 --- a/nonebot_bison/config_manager/__init__.py +++ b/nonebot_bison/config_manager/__init__.py @@ -2,10 +2,8 @@ import asyncio from datetime import datetime from nonebot import on_command -from nonebot.adapters import Bot, Event, MessageTemplate -from nonebot.adapters.onebot.v11 import MessageEvent +from nonebot.adapters import Bot, MessageTemplate from nonebot.adapters.onebot.v11.event import PrivateMessageEvent -from nonebot.adapters.onebot.v11.permission import GROUP_ADMIN, GROUP_OWNER from nonebot.matcher import Matcher from nonebot.params import ArgPlainText, ArgStr from nonebot.permission import SUPERUSER @@ -17,6 +15,7 @@ from .add_sub import do_add_sub from .del_sub import do_del_sub from .query_sub import do_query_sub from .utils import ( + admin_permission, common_platform, configurable_to_me, gen_handle_cancel, @@ -26,7 +25,7 @@ from .utils import ( add_sub_matcher = on_command( "添加订阅", rule=configurable_to_me, - permission=GROUP_ADMIN | GROUP_OWNER | SUPERUSER, + permission=admin_permission(), priority=5, block=True, ) @@ -42,7 +41,7 @@ do_query_sub(query_sub_matcher) del_sub_matcher = on_command( "删除订阅", rule=configurable_to_me, - permission=GROUP_ADMIN | GROUP_OWNER | SUPERUSER, + permission=admin_permission(), priority=5, block=True, ) @@ -124,3 +123,12 @@ async def do_dispatch_command( do_del_sub(new_matcher) new_matcher_ins = new_matcher() asyncio.create_task(new_matcher_ins.run(bot, event, state)) + + +__all__ = [ + "common_platform", + "add_sub_matcher", + "query_sub_matcher", + "del_sub_matcher", + "group_manage_matcher", +] diff --git a/nonebot_bison/config_manager/utils.py b/nonebot_bison/config_manager/utils.py index 12f56e1..7c41f08 100644 --- a/nonebot_bison/config_manager/utils.py +++ b/nonebot_bison/config_manager/utils.py @@ -1,8 +1,10 @@ +import contextlib from typing import Annotated, Type from nonebot.adapters import Event from nonebot.matcher import Matcher from nonebot.params import Depends, EventPlainText, EventToMe +from nonebot.permission import SUPERUSER from nonebot.rule import Rule from nonebot.typing import T_State from nonebot_plugin_saa import extract_target @@ -50,3 +52,13 @@ def ensure_user_info(matcher: Type[Matcher]): async def set_target_user_info(event: Event, state: T_State): user = extract_target(event) state["target_user_info"] = user + + +def admin_permission(): + permission = SUPERUSER + with contextlib.suppress(ImportError): + from nonebot.adapters.onebot.v11.permission import GROUP_ADMIN, GROUP_OWNER + + permission = permission | GROUP_ADMIN | GROUP_OWNER + + return permission