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