新增了完整的Signal渠道适配器实现,包含RPC客户端、守护进程管理、安全策略、消息处理、安装配置工具等全套功能,支持通过signal-cli与Signal网络进行通信,包含账户管理、消息收发、反应处理、媒体分析、健康检查等能力。
41 lines
1.1 KiB
Python
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)
|