ForcePilot/backend/package/yuxi/channel/extensions/bluebubbles/reactions.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

54 lines
1.3 KiB
Python

REACTION_ALIASES: dict[str, str] = {
"love": "love",
"\u2764\ufe0f": "love",
"\u2764": "love",
"fire": "love",
"\U0001f525": "love",
"heart_eyes": "love",
"like": "like",
"thumbsup": "like",
"thumb": "like",
"ok": "like",
"dislike": "dislike",
"thumbsdown": "dislike",
"boo": "dislike",
"no": "dislike",
"laugh": "laugh",
"haha": "laugh",
"lol": "laugh",
"lmao": "laugh",
"rofl": "laugh",
"\U0001f602": "laugh",
"\U0001f923": "laugh",
"xd": "laugh",
"emphasize": "emphasize",
"!!": "emphasize",
"\u203c\ufe0f": "emphasize",
"\u2757": "emphasize",
"important": "emphasize",
"bang": "emphasize",
"wow": "emphasize",
"question": "question",
"?": "question",
"\u2753": "question",
"\u2754": "question",
"ask": "question",
}
SUPPORTED_REACTIONS = frozenset({"love", "like", "dislike", "laugh", "emphasize", "question"})
def normalize_reaction_loose(raw: str) -> str:
return REACTION_ALIASES.get(raw.strip().lower(), "love")
def normalize_reaction_strict(raw: str) -> str:
key = raw.strip().lower()
if key not in REACTION_ALIASES:
raise ValueError(f"Unsupported reaction: {raw}")
return REACTION_ALIASES[key]
def is_supported_reaction(name: str) -> bool:
return name in SUPPORTED_REACTIONS