让 Robot 接入 WechatGateway 并同步推进文档

- 为 WechatGateway 增加属性写透传,兼容现有 ipad_bot 属性赋值方式
- 将 Robot 的 wechat 接入实例化入口切换为 Gateway,并默认走 legacy_855 provider
- 在适配路线图中补充当前推进状态,明确已完成项与待迁移运行时职责
This commit is contained in:
liuwei
2026-05-07 09:52:27 +08:00
parent 99d226c092
commit 712dda5b41
3 changed files with 43 additions and 5 deletions

View File

@@ -17,6 +17,7 @@ class WechatGateway:
"855": Legacy855WechatClient,
"859": Legacy855WechatClient,
}
_LOCAL_ATTRS = {"server_type", "provider"}
def __init__(self, ip: str, port: int, server_type: str = "legacy_855", **kwargs: Any):
normalized_server_type = str(server_type or "legacy_855").strip().lower()
@@ -24,10 +25,16 @@ class WechatGateway:
if provider_cls is None:
raise ValueError(f"不支持的 wechat provider 类型: {server_type}")
self.server_type = normalized_server_type
self.provider = provider_cls(ip=ip, port=port, **kwargs)
object.__setattr__(self, "server_type", normalized_server_type)
object.__setattr__(self, "provider", provider_cls(ip=ip, port=port, **kwargs))
def __getattr__(self, item: str) -> Any:
"""将未显式实现的属性/方法透传给具体 Provider。"""
return getattr(self.provider, item)
def __setattr__(self, key: str, value: Any) -> None:
"""将运行期动态属性写入透传给 Provider保持旧调用面的兼容性。"""
if key in self._LOCAL_ATTRS or "provider" not in self.__dict__:
object.__setattr__(self, key, value)
return
setattr(self.provider, key, value)