ForcePilot/backend/package/yuxi/channels/adapters/whatsapp/group_gating.py
Kris e9b57546ea feat(whatsapp): 新增WhatsApp适配器完整功能模块
新增大量WhatsApp适配器相关代码,包括账号管理、会话处理、消息收发、验证授权、媒体处理、互动命令、审批流程、健康检测等完整功能模块,搭建基础的Baileys协议WhatsApp接入能力
2026-05-12 00:51:58 +08:00

46 lines
1.8 KiB
Python

from __future__ import annotations
from typing import Any
from yuxi.utils.logging_config import logger
class GroupGating:
def __init__(self, config: dict[str, Any] | None = None):
cfg = config or {}
self._group_config: dict[str, dict[str, Any]] = {}
self._build_from_config(cfg)
def _build_from_config(self, config: dict) -> None:
groups_cfg = config.get("groups", {})
if isinstance(groups_cfg, dict):
self._group_config = {gid: gcfg if isinstance(gcfg, dict) else {} for gid, gcfg in groups_cfg.items()}
def require_mention(self, group_jid: str) -> bool:
jid_base = group_jid.split("@")[0] if "@" in group_jid else group_jid
for key, cfg in self._group_config.items():
if key == jid_base or key == group_jid:
return cfg.get("requireMention", False)
return False
def is_activated(self, group_jid: str) -> bool:
jid_base = group_jid.split("@")[0] if "@" in group_jid else group_jid
for key, cfg in self._group_config.items():
if key == jid_base or key == group_jid:
return cfg.get("activated", True)
return True
def activate(self, group_jid: str) -> None:
jid_base = group_jid.split("@")[0] if "@" in group_jid else group_jid
if jid_base not in self._group_config:
self._group_config[jid_base] = {}
self._group_config[jid_base]["activated"] = True
logger.info(f"GroupGating: activated {group_jid}")
def deactivate(self, group_jid: str) -> None:
jid_base = group_jid.split("@")[0] if "@" in group_jid else group_jid
if jid_base not in self._group_config:
self._group_config[jid_base] = {}
self._group_config[jid_base]["activated"] = False
logger.info(f"GroupGating: deactivated {group_jid}")