melobot.exceptions 源代码
from typing_extensions import TYPE_CHECKING
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 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 DependBindError(DependError):
"""melobot 依赖注入项值绑定失败"""
[文档]
class DynamicImpError(BotException):
"""melobot 动态导入组件异常"""
def __init__(self, *args: object, name: str | None = None, path: str | None = None) -> None:
super().__init__(*args)
self.name = name
self.path = path
[文档]
class DynamicImpSpecEmpty(DynamicImpError):
"""melobot 动态导入时,模块的 spec 为空"""