From 4b26268c601bac0c23c578558dd350653575146d Mon Sep 17 00:00:00 2001 From: Komorebi <110453675+KomoriDev@users.noreply.github.com> Date: Tue, 29 Aug 2023 10:25:37 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8D=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E5=88=A4=E6=96=AD=20FastAPI=20=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=AD=98=E5=9C=A8=E7=9A=84=E9=97=AE=E9=A2=98=20(#350)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🐛 修复多驱动器时无法正常判断 FastAPI 是否存在的问题 * 🎨 优化 * 🚑️ 再改 --- nonebot_bison/admin_page/__init__.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/nonebot_bison/admin_page/__init__.py b/nonebot_bison/admin_page/__init__.py index b63609b..6eda5c0 100644 --- a/nonebot_bison/admin_page/__init__.py +++ b/nonebot_bison/admin_page/__init__.py @@ -1,11 +1,11 @@ import os from pathlib import Path +from typing import TYPE_CHECKING from nonebot.log import logger from nonebot.rule import to_me from nonebot.typing import T_State from nonebot import get_driver, on_command -from nonebot.drivers.fastapi import Driver from nonebot.adapters.onebot.v11 import Bot from nonebot.adapters.onebot.v11.event import PrivateMessageEvent @@ -13,6 +13,10 @@ from .api import router as api_router from ..plugin_config import plugin_config from .token_manager import token_manager as tm +if TYPE_CHECKING: + from nonebot.drivers.fastapi import Driver + + STATIC_PATH = (Path(__file__).parent / "dist").resolve() @@ -35,7 +39,7 @@ def init_fastapi(): return super().lookup_path(self.index) return (full_path, stat_res) - def register_router_fastapi(driver: Driver, socketio): + def register_router_fastapi(driver: "Driver", socketio): static_path = STATIC_PATH nonebot_app = FastAPI( title="nonebot-bison", @@ -48,11 +52,7 @@ def init_fastapi(): app.mount("/bison", nonebot_app, "nonebot-bison") driver = get_driver() - if isinstance(driver, Driver): - register_router_fastapi(driver, socket_app) - else: - logger.warning(f"Driver {driver.type} not supported") - return + register_router_fastapi(driver, socket_app) host = str(driver.config.host) port = driver.config.port if host in ["0.0.0.0", "127.0.0.1"]: @@ -74,8 +74,12 @@ def register_get_token_handler(): def check_driver_is_fastapi() -> bool: - driver = get_driver() - return driver.type == "fastapi" + try: + from nonebot.drivers.fastapi import Driver + + return isinstance(get_driver(), Driver) + except ImportError: + return False if (STATIC_PATH / "index.html").exists():