新增 iMessage 通道适配器完整实现,包含: 1. 核心适配器与工具工厂导出 2. 运行时存储、反射防护、会话路由等基础组件 3. 消息信封、线程管理、回复上下文格式化 4. Tapback 表情反应处理、自定义异常体系 5. 审批按钮、联系人解析、速率限制功能 6. 文本净化、目标解析、缓存管理模块 7. 配置 schema、多账户支持、安装向导等配置模块 8. 审计日志、媒体AI处理等扩展功能
33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
from yuxi.channels.exceptions import ChannelException
|
|
|
|
|
|
class IMessageError(ChannelException):
|
|
def __init__(self, message: str, retryable: bool = False, retry_after_ms: int = 0):
|
|
super().__init__(message, retryable=retryable, retry_after_ms=retry_after_ms)
|
|
|
|
|
|
class BlueBubblesHTTPError(IMessageError):
|
|
def __init__(self, status_code: int, message: str = "", headers: dict | None = None):
|
|
self.status_code = status_code
|
|
self.headers = headers or {}
|
|
retryable = status_code >= 500 or status_code == 429
|
|
detail = f"HTTP {status_code}: {message}" if message else f"HTTP {status_code}"
|
|
super().__init__(detail, retryable=retryable)
|
|
|
|
|
|
class BlueBubblesConnectionError(IMessageError):
|
|
def __init__(self, message: str = ""):
|
|
super().__init__(message or "BlueBubbles connection failed", retryable=True, retry_after_ms=5000)
|
|
|
|
|
|
class BlueBubblesAuthenticationError(IMessageError):
|
|
def __init__(self, message: str = ""):
|
|
super().__init__(message or "BlueBubbles authentication failed", retryable=False)
|
|
|
|
|
|
class TapbackError(IMessageError):
|
|
def __init__(self, message: str = ""):
|
|
super().__init__(message or "Tapback operation failed", retryable=False)
|