fix(runtime): avoid creating Star instance in on_error fallback

This commit is contained in:
Lishiling
2026-03-18 23:05:40 +08:00
committed by whatevertogo
parent e961e36170
commit d2382858d2
2 changed files with 7 additions and 2 deletions

View File

@@ -978,7 +978,7 @@ class HandlerDispatcher:
if inspect.isawaitable(result):
await result
return
await Star().on_error(exc, event, ctx)
await Star.default_on_error(exc, event, ctx)
__all__ = ["CapabilityDispatcher", "HandlerDispatcher"]

View File

@@ -102,7 +102,9 @@ class Star(PluginKVStoreMixin):
options=options,
)
async def on_error(self, error: Exception, event, ctx) -> None:
@staticmethod
async def default_on_error(error: Exception, event, ctx) -> None:
del ctx
if isinstance(error, AstrBotError):
lines: list[str] = []
if error.retryable:
@@ -122,6 +124,9 @@ class Star(PluginKVStoreMixin):
await event.reply("出了点问题,请联系插件作者")
logger.error("handler 执行失败\n{}", traceback.format_exc())
async def on_error(self, error: Exception, event, ctx) -> None:
await self.default_on_error(error, event, ctx)
@classmethod
def __astrbot_is_new_star__(cls) -> bool:
return True