2023-07-18 21:43:25 +08:00

63 lines
1.6 KiB
Python

import contextlib
from typing import Annotated
from nonebot.rule import Rule
from nonebot.adapters import Event
from nonebot.typing import T_State
from nonebot.matcher import Matcher
from nonebot.permission import SUPERUSER
from nonebot_plugin_saa import extract_target
from nonebot.params import Depends, EventToMe, EventPlainText
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