ForcePilot/backend/package/yuxi/channels/adapters/imessage/tapback.py
Kris 068cf70fe9 feat(imessage): 实现完整的 iMessage 适配器基础模块
新增 iMessage 通道适配器完整实现,包含:
1. 核心适配器与工具工厂导出
2. 运行时存储、反射防护、会话路由等基础组件
3. 消息信封、线程管理、回复上下文格式化
4. Tapback 表情反应处理、自定义异常体系
5. 审批按钮、联系人解析、速率限制功能
6. 文本净化、目标解析、缓存管理模块
7. 配置 schema、多账户支持、安装向导等配置模块
8. 审计日志、媒体AI处理等扩展功能
2026-05-12 00:44:44 +08:00

59 lines
1.2 KiB
Python

TAPBACK_VALUE_MAP: dict[str, int] = {
"love": 0,
"heart": 0,
"like": 1,
"thumbs_up": 1,
"dislike": 2,
"thumbs_down": 2,
"laugh": 3,
"exclaim": 4,
"question": 5,
}
TAPBACK_EMOJI_MAP: dict[str, str] = {
"❤️": "love",
"👍": "like",
"👎": "dislike",
"😂": "laugh",
"": "exclaim",
"": "question",
}
TAPBACK_REVERSE_MAP: dict[int, str] = {
0: "❤️",
1: "👍",
2: "👎",
3: "😂",
4: "",
5: "",
}
TAPBACK_NAME_MAP: dict[int, str] = {
0: "❤️ Loved",
1: "👍 Liked",
2: "👎 Disliked",
3: "😂 Laughed",
4: "❗ Emphasized",
5: "❓ Questioned",
}
def emoji_to_tapback(emoji: str) -> str | None:
return TAPBACK_EMOJI_MAP.get(emoji)
def resolve_tapback_value(tapback_name: str) -> int | None:
return TAPBACK_VALUE_MAP.get(tapback_name.lower().strip().lstrip(":"))
def tapback_to_emoji(tapback_value: int) -> str | None:
return TAPBACK_REVERSE_MAP.get(tapback_value)
def describe_tapback(tapback_value: int) -> str:
return TAPBACK_NAME_MAP.get(tapback_value, "Reacted")
def is_valid_tapback(emoji: str) -> bool:
return emoji in TAPBACK_EMOJI_MAP