29 lines
1005 B
Python
29 lines
1005 B
Python
|
|
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, {})
|