melobot.exceptions 源代码
from typing_extensions import TYPE_CHECKING, Self
if TYPE_CHECKING:
from .adapter.model import ActionHandle
[文档]
class BotException(Exception):
"""bot 异常基类"""
def __init__(self, *args: object):
super().__init__(self, args)
if not len(args):
self.err = ""
elif len(args) == 1:
self.err = str(args[0])
else:
self.err = str(args)
self.pretty_err = f"[{self.__class__.__module__}.{self.__class__.__qualname__}] {self.err}"
def __str__(self) -> str:
return self.err
[文档]
class UtilError(BotException):
"""melobot.utils 异常"""
[文档]
class UtilValidateError(UtilError):
""":py:mod:`melobot.utils` 函数参数验证异常"""
[文档]
class BotError(BotException):
"""melobot bot 异常"""
[文档]
class SourceError(BotException):
"""melobot 源异常"""
[文档]
class PluginError(BotException):
"""melobot 插件异常"""
[文档]
class PluginAutoGenError(PluginError):
"""melobot 插件自动生成异常"""
[文档]
class PluginLoadError(PluginError):
"""melobot 插件加载异常"""
[文档]
class PluginIpcError(PluginError):
"""melobot 插件间通信异常"""
[文档]
class ShareObjectCallbackFailed(PluginError):
"""melobot 共享对象回调失败异常"""
def __init__(self, result: object) -> None:
self.result = result
super().__init__(f"共享对象回调执行失败,结果:{result}")
[文档]
class SessionError(BotException):
"""melobot 会话异常"""
[文档]
class SessionStateFailed(SessionError):
def __init__(self, cur_state: str, meth: str) -> None:
self.cur_state = cur_state
super().__init__(f"当前会话状态 {cur_state} 不支持的操作:{meth}")
[文档]
class SessionRuleLacked(SessionError): ...
[文档]
class FlowError(BotException):
"""melobot 处理流异常"""
[文档]
class LogError(BotException):
"""melobot 日志器异常"""
[文档]
class HookError(BotException):
"""melobot 生命周期组件异常"""
[文档]
class AdapterError(BotException):
"""melobot 适配器异常"""
[文档]
class ActionHandleError(BotException):
"""melobot 行为操作异常"""
def __init__(self, *args: object, handle: "ActionHandle") -> None:
super().__init__(*args)
self.handle = handle
[文档]
class DependError(BotException):
"""melobot 依赖注入异常"""
[文档]
class DependInitError(DependError):
"""melobot 依赖注入项初始化失败(特定场景下无影响)"""
[文档]
class DependResolveFailed(DependError):
"""melobot 依赖注入解析失败(不可恢复)"""
[文档]
class DynImportError(BotException):
"""melobot 动态导入组件异常"""
def __init__(self, *args: object, name: str | None = None, path: str | None = None) -> None:
super().__init__(*args)
self.args = args
self.name = name
self.path = path
[文档]
class ImportNameConflict(DynImportError):
"""melobot 动态导入时,命名空间名称冲突"""
def __init__(self, *args: object, name: str, path: str) -> None:
super().__init__(*args, name=name, path=path)
self.name: str
self.path: str
[文档]
def derive(self, *, name: str, path: str) -> Self:
return self.__class__(*self.args, name=name, path=path)
def __str__(self) -> str:
return f"{super().__str__()} (本次目标: {self.name!r}, 在以下目录中搜索: {self.path})"
[文档]
class ImportSpecEmpty(DynImportError):
"""melobot 动态导入时,模块的 spec 为空"""