From cf29fbcf7492c3c69d9a366ea4eb916bfd0125db Mon Sep 17 00:00:00 2001 From: ThelevenFD <104363913+ThelevenFD@users.noreply.github.com> Date: Mon, 16 Dec 2024 22:55:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=88=B3=E4=B8=80=E6=88=B3?= =?UTF-8?q?=E8=87=AA=E6=A3=80=20=20(#1773)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update Check 增加戳一戳获取自检 * 新增获取自检状态方法 * 可和戳一戳同时触发 * 增加配置项 --- zhenxun/builtin_plugins/check/__init__.py | 59 ++++++++++++++++++----- 1 file changed, 46 insertions(+), 13 deletions(-) diff --git a/zhenxun/builtin_plugins/check/__init__.py b/zhenxun/builtin_plugins/check/__init__.py index f4c4f89a..273a5e3c 100644 --- a/zhenxun/builtin_plugins/check/__init__.py +++ b/zhenxun/builtin_plugins/check/__init__.py @@ -1,15 +1,18 @@ +from nonebot import on_notice +from nonebot.adapters.onebot.v11 import PokeNotifyEvent from nonebot.permission import SUPERUSER from nonebot.plugin import PluginMetadata from nonebot.rule import to_me -from nonebot_plugin_alconna import Alconna, Arparma, on_alconna +from nonebot_plugin_alconna import Alconna, on_alconna from nonebot_plugin_htmlrender import template_to_pic -from nonebot_plugin_session import EventSession +from zhenxun.configs.config import Config from zhenxun.configs.path_config import TEMPLATE_PATH -from zhenxun.configs.utils import PluginExtraData +from zhenxun.configs.utils import PluginExtraData, RegisterConfig from zhenxun.services.log import logger from zhenxun.utils.enum import PluginType from zhenxun.utils.message import MessageUtils +from zhenxun.utils.rules import notice_rule from .data_source import get_status_info @@ -20,21 +23,27 @@ __plugin_meta__ = PluginMetadata( 查看服务器当前状态 指令: 自检 + 戳一戳BOT """.strip(), extra=PluginExtraData( - author="HibiKier", version="0.1", plugin_type=PluginType.SUPERUSER + author="HibiKier", + version="0.1", + plugin_type=PluginType.SUPERUSER, + configs=[ + RegisterConfig( + key="type", + value="mix", + help="自检触发方式 ['message', 'poke', 'mix']", + default_value="mix", + ) + ], ).dict(), ) -_matcher = on_alconna( - Alconna("自检"), rule=to_me(), permission=SUPERUSER, block=True, priority=1 -) - - -@_matcher.handle() -async def _(session: EventSession, arparma: Arparma): +async def handle_self_check(): try: + logger.info("触发自检") data = await get_status_info() image = await template_to_pic( template_path=str((TEMPLATE_PATH / "check").absolute()), @@ -47,7 +56,31 @@ async def _(session: EventSession, arparma: Arparma): wait=2, ) await MessageUtils.build_message(image).send() - logger.info("自检", arparma.header_result, session=session) + logger.info("自检成功") except Exception as e: await MessageUtils.build_message(f"自检失败: {e}").send() - logger.error("自检失败", arparma.header_result, session=session, e=e) + logger.error("自检失败", e=e) + + +check_type = Config.get_config("check", "type") + +if check_type in {"message", "mix"}: + # message + _self_check_matcher = on_alconna( + Alconna("自检"), rule=to_me(), permission=SUPERUSER, block=True, priority=1 + ) + + @_self_check_matcher.handle() + async def handle_message_check(): + await handle_self_check() + + +if check_type in {"poke", "mix"}: + # poke + _self_check_poke_matcher = on_notice( + priority=5, block=False, rule=notice_rule(PokeNotifyEvent) & to_me() + ) + + @_self_check_poke_matcher.handle() + async def handle_poke_check(event: PokeNotifyEvent): + await handle_self_check()