feat(weixin): add personal WeChat channel via ilinkai HTTP long-poll API

Add a new WeChat (微信) channel that connects to personal WeChat using
the ilinkai.weixin.qq.com HTTP long-poll API. Protocol reverse-engineered
from @tencent-weixin/openclaw-weixin v1.0.2.

Features:
- QR code login flow (nanobot weixin login)
- HTTP long-poll message receiving (getupdates)
- Text message sending with proper WeixinMessage format
- Media download with AES-128-ECB decryption (image/voice/file/video)
- Voice-to-text from WeChat + Groq Whisper fallback
- Quoted message (ref_msg) support
- Session expiry detection and auto-pause
- Server-suggested poll timeout adaptation
- Context token caching for replies
- Auto-discovery via channel registry

No WebSocket, no Node.js bridge, no local WeChat client needed — pure
HTTP with a bot token obtained via QR code scan.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
ZhangYuanhan-AI
2026-03-22 15:03:18 +08:00
committed by Xubin Ren
parent 2056061765
commit ebc4c2ec35
3 changed files with 869 additions and 0 deletions

View File

@@ -54,6 +54,11 @@ dependencies = [
wecom = [
"wecom-aibot-sdk-python>=0.1.5",
]
weixin = [
"qrcode[pil]>=8.0",
"pycryptodome>=3.20.0",
]
matrix = [
"matrix-nio[e2e]>=0.25.2",
"mistune>=3.0.0,<4.0.0",