ForcePilot/backend/package/yuxi/channel/extensions/qqbot/group_activation.py

29 lines
1005 B
Python
Raw Normal View History

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, {})