melobot.exceptions 源代码
import logging
import sys
import better_exceptions
from typing_extensions import Any
better_exceptions.SUPPORTS_COLOR = True
better_exceptions.color.SUPPORTS_COLOR = True
better_exceptions.formatter.SUPPORTS_COLOR = True
# 修复在 windows powershell 显示错误的 bug
better_exceptions.encoding.ENCODING = sys.stdout.encoding
better_exceptions.formatter.ENCODING = sys.stdout.encoding
# 直接 hook,而不是让它使用环境变量触发
sys.excepthook = better_exceptions.excepthook
# 取消它的猴子补丁
logging._loggerClass = ( # type:ignore[attr-defined]
logging.Logger
)
[文档]
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 DependError(BotException):
"""melobot 依赖注入异常"""
[文档]
class DependInitError(DependError):
"""melobot 依赖注入项初始化失败"""
[文档]
class DependBindError(DependError):
"""melobot 依赖注入项值绑定失败"""
[文档]
class DynamicImpError(BotException, ImportError):
"""melobot 动态导入组件异常"""
def __init__(self, *args: Any, name: str | None = None, path: str | None = None) -> None:
BotException.__init__(self, *args)
ImportError.__init__(self, *args, name=name, path=path)