Files
nanobot/nanobot/channels/weixin/state.py
T

28 lines
770 B
Python

"""WeChat-owned persisted login-state detection."""
from __future__ import annotations
import json
from pathlib import Path
from typing import Any
from nanobot.channels.contracts import channel_field_value
from nanobot.config.paths import get_config_path
def local_state_present(section: Any) -> bool:
configured_dir = channel_field_value(section, "stateDir")
state_dir = (
Path(str(configured_dir)).expanduser()
if configured_dir
else get_config_path().parent / "weixin"
)
try:
payload = json.loads((state_dir / "account.json").read_text(encoding="utf-8"))
except (OSError, ValueError, TypeError):
return False
return bool(str(payload.get("token") or "").strip())
__all__ = ["local_state_present"]