diff --git a/nonebot/dependencies/__init__.py b/nonebot/dependencies/__init__.py index da02f531..7c6f58c0 100644 --- a/nonebot/dependencies/__init__.py +++ b/nonebot/dependencies/__init__.py @@ -182,13 +182,17 @@ class Dependent(Generic[R]): return cls(call, params, parameterless_params) async def check(self, **params: Any) -> None: - async with anyio.create_task_group() as tg: - for param in self.parameterless: - tg.start_soon(partial(param._check, **params)) + if self.parameterless: + async with anyio.create_task_group() as tg: + for param in self.parameterless: + tg.start_soon(partial(param._check, **params)) - async with anyio.create_task_group() as tg: - for param in self.params: - tg.start_soon(partial(cast(Param, param.field_info)._check, **params)) + if self.params: + async with anyio.create_task_group() as tg: + for param in self.params: + tg.start_soon( + partial(cast(Param, param.field_info)._check, **params) + ) async def _solve_field(self, field: ModelField, params: dict[str, Any]) -> Any: param = cast(Param, field.field_info) @@ -205,6 +209,8 @@ class Dependent(Generic[R]): # solve param values result: dict[str, Any] = {} + if not self.params: + return result async def _solve_field(field: ModelField, params: dict[str, Any]) -> None: value = await self._solve_field(field, params) diff --git a/nonebot/internal/driver/abstract.py b/nonebot/internal/driver/abstract.py index 257fc5e9..994abc5d 100644 --- a/nonebot/internal/driver/abstract.py +++ b/nonebot/internal/driver/abstract.py @@ -158,6 +158,9 @@ class Driver(abc.ABC): raise RuntimeError(f"Duplicate bot connection with id {bot.self_id}") self._bots[bot.self_id] = bot + if not self._bot_connection_hook: + return + def handle_exception(exc_group: BaseExceptionGroup) -> None: for exc in flatten_exception_group(exc_group): logger.opt(colors=True, exception=exc).error( @@ -186,6 +189,9 @@ class Driver(abc.ABC): if bot.self_id in self._bots: del self._bots[bot.self_id] + if not self._bot_disconnection_hook: + return + def handle_exception(exc_group: BaseExceptionGroup) -> None: for exc in flatten_exception_group(exc_group): logger.opt(colors=True, exception=exc).error(