ForcePilot/backend/package/yuxi/channel/extensions/twitter/reactions.py
Kris 1c590097be feat(channel): 添加 Twitter 和 Viber 渠道扩展
新增 Twitter 和 Viber 两个渠道扩展。

Twitter 渠道扩展功能模块:
- auth: OAuth 认证管理
- config: 渠道配置管理
- gateway: SSE/WebSocket 网关接入
- webhook: Webhook 事件处理
- outbound: 外发消息管理
- streaming: 流式消息处理
- pairing: 用户配对与绑定
- security: 安全校验
- dedupe: 消息去重
- monitor: 渠道状态监控
- status: 会话状态管理
- session: 会话管理
- tweets: 推文管理
- social: 社交互动
- reactions: 表情反应
- media: 媒体资源处理

Viber 渠道扩展功能模块:
- config: 渠道配置管理
- gateway: SSE/WebSocket 网关接入
- webhook: Webhook 事件处理
- outbound: 外发消息管理
- streaming: 流式消息处理
- pairing: 用户配对与绑定
- security: 安全校验
- dedupe: 消息去重
- monitor: 渠道状态监控
- status: 会话状态管理
- rate_limiter: 速率限制
- media: 媒体资源处理
2026-05-21 11:57:22 +08:00

48 lines
881 B
Python

from __future__ import annotations
SUPPORTED_REACTIONS = frozenset(
{
"❤️",
"😆",
"😢",
"😲",
"🔥",
"👍",
"👎",
"😂",
"🙏",
"💯",
"🎉",
"👏",
"😡",
"🤔",
}
)
_EMOJI_MAP = {
"heart": "❤️",
"like": "👍",
"dislike": "👎",
"laugh": "😂",
"sad": "😢",
"wow": "😲",
"fire": "🔥",
"pray": "🙏",
"hundred": "💯",
"party": "🎉",
"clap": "👏",
"angry": "😡",
"think": "🤔",
}
def normalize_emoji(emoji: str) -> str | None:
stripped = emoji.strip()
if stripped in SUPPORTED_REACTIONS:
return stripped
return _EMOJI_MAP.get(stripped.lower())
def is_supported(emoji: str) -> bool:
return normalize_emoji(emoji) in SUPPORTED_REACTIONS