mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
新增戳一戳自检 (#1773)
* Update Check 增加戳一戳获取自检 * 新增获取自检状态方法 * 可和戳一戳同时触发 * 增加配置项
This commit is contained in:
parent
b47c4be25d
commit
cf29fbcf74
@ -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()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user