ForcePilot/backend/package/yuxi/channels/adapters/imessage/tapback.py

59 lines
1.2 KiB
Python
Raw Normal View History

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