ForcePilot/backend/package/yuxi/channel/extensions/bluebubbles/status.py
Kris b018e3eda4 feat(bluebubbles): 新增BlueBubbles(iMessage)渠道插件完整实现
该提交新增了完整的BlueBubbles渠道插件,支持通过BlueBubbles Server集成iMessage功能,包含以下核心能力:
1.  支持私聊和群聊会话管理,自动区分会话类型
2.  完整的消息收发支持,包括文本、图片、语音、文件、视频消息
3.  支持消息反应、已读回执、消息编辑与撤回
4.  内置去重、防抖处理机制
5.  支持Webhook和WebSocket两种事件接收方式
6.  完善的权限与安全校验机制
7.  历史消息同步与抓包功能
8.  TTS语音合成与发送支持
9.  群组管理能力,包括重命名、修改头像、增减成员等
2026-05-21 10:40:33 +08:00

47 lines
1.4 KiB
Python

from dataclasses import dataclass, field
@dataclass
class BlueBubblesStatus:
account_id: str
connected: bool = False
server_url: str = ""
private_api_enabled: bool = False
imessage_logged_in: bool = False
os_version: str | None = None
macos_major: int | None = None
ws_connected: bool = False
webhook_configured: bool = False
issues: list[str] = field(default_factory=list)
@property
def is_healthy(self) -> bool:
return self.connected and self.imessage_logged_in and not self.issues
@property
def status_text(self) -> str:
if not self.connected:
return "disconnected"
if not self.imessage_logged_in:
return "iMessage not logged in"
if not self.private_api_enabled:
return "public-api-only"
return "healthy"
def build_status_report(status: BlueBubblesStatus) -> dict:
return {
"account_id": status.account_id,
"connected": status.connected,
"server_url": status.server_url,
"private_api_enabled": status.private_api_enabled,
"imessage_logged_in": status.imessage_logged_in,
"os_version": status.os_version,
"macos_major": status.macos_major,
"ws_connected": status.ws_connected,
"webhook_configured": status.webhook_configured,
"is_healthy": status.is_healthy,
"status_text": status.status_text,
"issues": status.issues,
}