该提交新增了基于BlueBubbles的iMessage渠道插件,支持单聊和群组消息,包含文本、图片、语音、文件和视频消息收发,支持消息编辑、撤回、回复、 reactions和输入状态提示,同时实现了账号配置、安全校验、配对授权、消息格式化与分片等完整功能。
36 lines
778 B
Python
36 lines
778 B
Python
from __future__ import annotations
|
|
|
|
|
|
class IMessageError(Exception):
|
|
pass
|
|
|
|
|
|
class IMessageAuthError(IMessageError):
|
|
pass
|
|
|
|
|
|
class IMessageConnectionError(IMessageError):
|
|
pass
|
|
|
|
|
|
class IMessageSendError(IMessageError):
|
|
pass
|
|
|
|
|
|
class IMessageMediaError(IMessageError):
|
|
pass
|
|
|
|
|
|
def classify_http_error(status_code: int, body: str = "") -> IMessageError:
|
|
if status_code == 401 or status_code == 403:
|
|
return IMessageAuthError(f"HTTP {status_code}: {body}")
|
|
if status_code >= 500:
|
|
return IMessageConnectionError(f"HTTP {status_code}: {body}")
|
|
return IMessageError(f"HTTP {status_code}: {body}")
|
|
|
|
|
|
def get_retry_after_ms(error: Exception) -> int | None:
|
|
if isinstance(error, IMessageConnectionError):
|
|
return 5000
|
|
return None
|