From b057a05520b3dd8699140aba2e5ccbc33aa9d37c Mon Sep 17 00:00:00 2001 From: HibiKier <775757368@qq.com> Date: Sat, 15 Oct 2022 22:13:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E5=A4=9A=E7=9A=84=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E6=B3=A8=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + utils/depends/__init__.py | 106 +++++++++++++++++++++++++++++++++++++- 2 files changed, 106 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ebf87ee3..14d06dd4 100644 --- a/README.md +++ b/README.md @@ -294,6 +294,7 @@ PS: **ARM平台** 请使用全量版 同时 **如果你的机器 RAM < 1G 可能 * 商品添加使用前方法和使用后方法(类似hook),使用方法具体查看文档或签到商品文件中注册的例子 * 新增用户使用道具,花费金币(包括插件)及用途记录 * 更细致的金币使用依赖注入 +* 更多的依赖注入(包含图片获取等等.. * 色图插件p站反向代理失效 [@pull/1139](https://github.com/HibiKier/zhenxun_bot/pull/1139) ### 2022/10/9 diff --git a/utils/depends/__init__.py b/utils/depends/__init__.py index e1857809..d032dc6a 100644 --- a/utils/depends/__init__.py +++ b/utils/depends/__init__.py @@ -1,9 +1,12 @@ -from nonebot.adapters.onebot.v11 import GroupMessageEvent +from typing import List, Callable + +from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageEvent from nonebot.internal.matcher import Matcher from nonebot.internal.params import Depends from models.user_shop_gold_log import UserShopGoldLog from models.bag_user import BagUser from utils.message_builder import at +from utils.utils import get_message_at, get_message_face, get_message_img, get_message_text def cost_gold(gold: int): @@ -22,3 +25,104 @@ def cost_gold(gold: int): return Depends(dependency) +def ImageList() -> List[str]: + """ + 说明: + 获取图片列表 + """ + async def dependency(event: MessageEvent): + return get_message_img(event.message) + + return Depends(dependency) + + +def AtList() -> List[str]: + """ + 说明: + 获取at列表 + """ + async def dependency(event: MessageEvent): + return get_message_at(event.message) + + return Depends(dependency) + + +def FaceList() -> List[str]: + """ + 说明: + 获取face列表 + """ + async def dependency(event: MessageEvent): + return get_message_face(event.message) + + return Depends(dependency) + + +def PlaintText() -> str: + """ + 说明: + 获取纯文本 + """ + async def dependency(event: MessageEvent): + return get_message_text(event.message) + + return Depends(dependency) + + +async def _match(matcher: Matcher, event: MessageEvent, msg: str, func: Callable): + _list = func(event.message) + if not _list and msg: + await matcher.finish(msg) + return _list + + +def MatchImageList(msg: str) -> List[str]: + """ + 说明: + 获取图片列表且不能为空,为空时提示并结束事件 + 参数: + :param msg: 提示文本 + """ + async def dependency(matcher: Matcher, event: MessageEvent): + return await _match(matcher, event, msg, get_message_img) + + return Depends(dependency) + + +def MatchAtList(msg: str) -> List[str]: + """ + 说明: + 获取at列表且不能为空,为空时提示并结束事件 + 参数: + :param msg: 提示文本 + """ + async def dependency(matcher: Matcher, event: MessageEvent): + return await _match(matcher, event, msg, get_message_at) + + return Depends(dependency) + + +def MatchFaceList(msg: str) -> List[str]: + """ + 说明: + 获取face列表且不能为空,为空时提示并结束事件 + 参数: + :param msg: 提示文本 + """ + async def dependency(matcher: Matcher, event: MessageEvent): + return await _match(matcher, event, msg, get_message_face) + + return Depends(dependency) + + +def MatchPlaintText(msg: str) -> str: + """ + 说明: + 获取纯文本且不能为空,为空时提示并结束事件 + 参数: + :param msg: 提示文本 + """ + async def dependency(matcher: Matcher, event: MessageEvent): + return await _match(matcher, event, msg, get_message_text) + + return Depends(dependency)