from __future__ import annotations import logging from typing import Any logger = logging.getLogger(__name__) class GroupActivation: def __init__(self, config: dict): self._config = config self._session_overrides: dict[str, str] = {} def resolve_activation(self, group_openid: str) -> str: if group_openid in self._session_overrides: return self._session_overrides[group_openid] group_cfg = self._get_group_config(group_openid) return group_cfg.get("require_mention", True) and "mention" or "always" def set_session_override(self, group_openid: str, mode: str) -> None: self._session_overrides[group_openid] = mode def clear_session_override(self, group_openid: str) -> None: self._session_overrides.pop(group_openid, None) def _get_group_config(self, group_openid: str) -> dict: groups = self._config.get("channels", {}).get("qqbot", {}).get("groups", {}) return groups.get(group_openid, {})