ForcePilot/backend/package/yuxi/channels/adapters/signal/reaction_level.py
Kris 8dc86766f1 feat(channels/signal): 新增Signal渠道适配器完整实现
新增了完整的Signal渠道适配器实现,包含RPC客户端、守护进程管理、安全策略、消息处理、安装配置工具等全套功能,支持通过signal-cli与Signal网络进行通信,包含账户管理、消息收发、反应处理、媒体分析、健康检查等能力。
2026-05-12 00:48:25 +08:00

41 lines
1.1 KiB
Python

from enum import StrEnum
class ReactionLevel(StrEnum):
OFF = "off"
ACK = "ack"
MINIMAL = "minimal"
EXTENSIVE = "extensive"
class ReactionLevelController:
ACK_EMOJI = "\U0001f440"
def __init__(self, level: str = "minimal"):
self.level = ReactionLevel(level)
self._ack_sent: set[str] = set()
def should_send_reaction(self, chat_id: str, emoji: str | None = None) -> bool:
match self.level:
case ReactionLevel.OFF:
return False
case ReactionLevel.ACK:
return emoji == self.ACK_EMOJI
case ReactionLevel.MINIMAL:
return True
case ReactionLevel.EXTENSIVE:
return True
case _:
return True
def should_send_auto_ack(self, chat_id: str) -> bool:
if self.level == ReactionLevel.OFF:
return False
if chat_id in self._ack_sent:
return False
self._ack_sent.add(chat_id)
return True
def reset_ack(self, chat_id: str) -> None:
self._ack_sent.discard(chat_id)