新增戳一戳自检 (#1773)

* Update Check

增加戳一戳获取自检

* 新增获取自检状态方法

* 可和戳一戳同时触发

* 增加配置项
This commit is contained in:
ThelevenFD 2024-12-16 22:55:12 +08:00 committed by GitHub
parent b47c4be25d
commit cf29fbcf74
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,15 +1,18 @@
from nonebot import on_notice
from nonebot.adapters.onebot.v11 import PokeNotifyEvent
from nonebot.permission import SUPERUSER from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot.rule import to_me 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_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.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.services.log import logger
from zhenxun.utils.enum import PluginType from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils from zhenxun.utils.message import MessageUtils
from zhenxun.utils.rules import notice_rule
from .data_source import get_status_info from .data_source import get_status_info
@ -20,21 +23,27 @@ __plugin_meta__ = PluginMetadata(
查看服务器当前状态 查看服务器当前状态
指令: 指令:
自检 自检
戳一戳BOT
""".strip(), """.strip(),
extra=PluginExtraData( 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(), ).dict(),
) )
_matcher = on_alconna( async def handle_self_check():
Alconna("自检"), rule=to_me(), permission=SUPERUSER, block=True, priority=1
)
@_matcher.handle()
async def _(session: EventSession, arparma: Arparma):
try: try:
logger.info("触发自检")
data = await get_status_info() data = await get_status_info()
image = await template_to_pic( image = await template_to_pic(
template_path=str((TEMPLATE_PATH / "check").absolute()), template_path=str((TEMPLATE_PATH / "check").absolute()),
@ -47,7 +56,31 @@ async def _(session: EventSession, arparma: Arparma):
wait=2, wait=2,
) )
await MessageUtils.build_message(image).send() await MessageUtils.build_message(image).send()
logger.info("自检", arparma.header_result, session=session) logger.info("自检成功")
except Exception as e: except Exception as e:
await MessageUtils.build_message(f"自检失败: {e}").send() 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()