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

53 lines
1.4 KiB
Python

from typing import Annotated, Type
from nonebot.adapters import Event
from nonebot.matcher import Matcher
from nonebot.params import Depends, EventPlainText, EventToMe
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