From fcf78d0112e6683594ecaa0d889d9ccc95e91264 Mon Sep 17 00:00:00 2001 From: StarHeart Date: Fri, 9 Aug 2024 06:35:43 +0000 Subject: [PATCH] feat: init server status plugin --- src/plugins/fgo_server_status/__init__.py | 7 ++++ src/plugins/fgo_server_status/common.py | 40 +++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 src/plugins/fgo_server_status/__init__.py create mode 100644 src/plugins/fgo_server_status/common.py diff --git a/src/plugins/fgo_server_status/__init__.py b/src/plugins/fgo_server_status/__init__.py new file mode 100644 index 0000000..c125679 --- /dev/null +++ b/src/plugins/fgo_server_status/__init__.py @@ -0,0 +1,7 @@ +from nonebot.plugin import PluginMetadata + +from . import common as common + +__plugin_meta__ = PluginMetadata( + "FGO 服务器状态查询", "定时推送及查询 FGO 服务器状态", "" +) diff --git a/src/plugins/fgo_server_status/common.py b/src/plugins/fgo_server_status/common.py new file mode 100644 index 0000000..af7caa3 --- /dev/null +++ b/src/plugins/fgo_server_status/common.py @@ -0,0 +1,40 @@ +import httpx +from nonebot import logger +from nonebot_plugin_alconna import Args, Match, Alconna, on_alconna + +from . import __plugin_meta__ + +server_status = on_alconna( + Alconna("server_status", Args["type?", str]), + aliases={"服务器状态"}, + priority=10, + use_cmd_start=True, +) + + +async def fetch_status(type: str): + match type: + case "国服": + ... + case "日服": + ... + + +@server_status.handle() +async def handle_default(type: Match[str]) -> None: + if type.available: + try: + result = await fetch_status(type.result) + except httpx.HTTPError as e: + logger.opt(colors=True, exception=e).error( + "failed to fetch guess from nbnhhsh api" + ) + await server_status.finish(f"查询出错,请稍后重试:\n{e}") + + if not result: + await server_status.finish("查询结果为空") + + await server_status.finish(result) + + else: + await server_status.finish(__plugin_meta__.usage)