2023-06-11 15:32:57 +08:00

65 lines
1.7 KiB
Python

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
from ..platform import platform_manager
from ..plugin_config import plugin_config
def _configurable_to_me(to_me: bool = EventToMe()):
if plugin_config.bison_to_me:
return to_me
else:
return True
configurable_to_me = Rule(_configurable_to_me)
common_platform = [
p.platform_name
for p in filter(
lambda platform: platform.enabled and platform.is_common,
platform_manager.values(),
)
]
def gen_handle_cancel(matcher: Type[Matcher], message: str):
async def _handle_cancel(text: Annotated[str, EventPlainText()]):
if text == "取消":
await matcher.finish(message)
return Depends(_handle_cancel)
def ensure_user_info(matcher: Type[Matcher]):
async def _check_user_info(state: T_State):
if not state.get("target_user_info"):
await matcher.finish(
"No target_user_info set, this shouldn't happen, please issue"
)
return _check_user_info
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