2024-12-16 22:55:12 +08:00
|
|
|
from nonebot import on_notice
|
|
|
|
|
from nonebot.adapters.onebot.v11 import PokeNotifyEvent
|
2024-09-07 01:25:42 +08:00
|
|
|
from nonebot.permission import SUPERUSER
|
|
|
|
|
from nonebot.plugin import PluginMetadata
|
2024-12-23 10:09:06 +08:00
|
|
|
from nonebot.rule import Rule, to_me
|
2024-12-16 22:55:12 +08:00
|
|
|
from nonebot_plugin_alconna import Alconna, on_alconna
|
2024-09-07 01:25:42 +08:00
|
|
|
|
2024-12-16 22:55:12 +08:00
|
|
|
from zhenxun.configs.config import Config
|
|
|
|
|
from zhenxun.configs.utils import PluginExtraData, RegisterConfig
|
2024-09-07 01:25:42 +08:00
|
|
|
from zhenxun.services.log import logger
|
2025-08-15 16:34:37 +08:00
|
|
|
from zhenxun.services.renderer import renderer_service
|
2024-09-07 01:25:42 +08:00
|
|
|
from zhenxun.utils.enum import PluginType
|
|
|
|
|
from zhenxun.utils.message import MessageUtils
|
2024-12-16 22:55:12 +08:00
|
|
|
from zhenxun.utils.rules import notice_rule
|
2024-09-07 01:25:42 +08:00
|
|
|
|
|
|
|
|
from .data_source import get_status_info
|
|
|
|
|
|
|
|
|
|
__plugin_meta__ = PluginMetadata(
|
|
|
|
|
name="服务器自我检查",
|
|
|
|
|
description="查看服务器当前状态",
|
|
|
|
|
usage="""
|
|
|
|
|
查看服务器当前状态
|
|
|
|
|
指令:
|
|
|
|
|
自检
|
2024-12-16 22:55:12 +08:00
|
|
|
戳一戳BOT
|
2024-09-07 01:25:42 +08:00
|
|
|
""".strip(),
|
|
|
|
|
extra=PluginExtraData(
|
2024-12-16 22:55:12 +08:00
|
|
|
author="HibiKier",
|
|
|
|
|
version="0.1",
|
|
|
|
|
plugin_type=PluginType.SUPERUSER,
|
|
|
|
|
configs=[
|
|
|
|
|
RegisterConfig(
|
|
|
|
|
key="type",
|
|
|
|
|
value="mix",
|
|
|
|
|
help="自检触发方式 ['message', 'poke', 'mix']",
|
|
|
|
|
default_value="mix",
|
|
|
|
|
)
|
|
|
|
|
],
|
2025-01-07 14:20:30 +08:00
|
|
|
).to_dict(),
|
2024-09-07 01:25:42 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2024-12-23 10:09:06 +08:00
|
|
|
def commandRule() -> Rule:
|
|
|
|
|
return Rule(lambda: Config.get_config("check", "type") in {"message", "mix"})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def noticeRule() -> Rule:
|
|
|
|
|
return Rule(lambda: Config.get_config("check", "type") in {"poke", "mix"})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_self_check_matcher = _self_check_matcher = on_alconna(
|
|
|
|
|
Alconna("自检"),
|
|
|
|
|
rule=to_me() & commandRule(),
|
|
|
|
|
permission=SUPERUSER,
|
|
|
|
|
block=True,
|
|
|
|
|
priority=1,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
_self_check_poke_matcher = on_notice(
|
|
|
|
|
priority=5,
|
|
|
|
|
permission=SUPERUSER,
|
|
|
|
|
block=False,
|
|
|
|
|
rule=notice_rule(PokeNotifyEvent) & to_me() & noticeRule(),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2024-12-16 22:55:12 +08:00
|
|
|
async def handle_self_check():
|
2024-09-07 01:25:42 +08:00
|
|
|
try:
|
2025-08-15 16:34:37 +08:00
|
|
|
data_dict = await get_status_info()
|
|
|
|
|
|
|
|
|
|
image_bytes = await renderer_service.render(
|
|
|
|
|
"pages/builtin/check", data=data_dict
|
2024-09-07 01:25:42 +08:00
|
|
|
)
|
2025-08-15 16:34:37 +08:00
|
|
|
|
|
|
|
|
await MessageUtils.build_message(image_bytes).send()
|
2024-12-23 10:09:06 +08:00
|
|
|
logger.info("自检成功", "自检")
|
2024-09-07 01:25:42 +08:00
|
|
|
except Exception as e:
|
|
|
|
|
await MessageUtils.build_message(f"自检失败: {e}").send()
|
2024-12-23 10:09:06 +08:00
|
|
|
logger.error("自检失败", "自检", e=e)
|
2024-12-16 22:55:12 +08:00
|
|
|
|
|
|
|
|
|
2024-12-23 10:09:06 +08:00
|
|
|
@_self_check_matcher.handle()
|
|
|
|
|
async def handle_message_check():
|
|
|
|
|
await handle_self_check()
|
2024-12-16 22:55:12 +08:00
|
|
|
|
|
|
|
|
|
2024-12-23 10:09:06 +08:00
|
|
|
@_self_check_poke_matcher.handle()
|
|
|
|
|
async def handle_poke_check():
|
|
|
|
|
await handle_self_check()
|