{"versions":{"1.0.0":{"name":"@tencent-weixin/openclaw-weixin","version":"1.0.0","description":"OpenClaw Weixin channel","license":"MIT","author":{"name":"Tencent"},"type":"module","scripts":{"test":"vitest run --coverage","typecheck":"tsc --noEmit","build":"tsc","prepublishOnly":"npm run typecheck && npm run build"},"engines":{"node":">=22"},"dependencies":{"qrcode-terminal":"0.12.0","zod":"4.3.6"},"devDependencies":{"@vitest/coverage-v8":"^3.1.0","typescript":"^5.8.0","vitest":"^3.1.0"},"openclaw":{"extensions":["./index.ts"],"channel":{"id":"openclaw-weixin","label":"Weixin","selectionLabel":"Weixin","docsPath":"/channels/openclaw-weixin","docsLabel":"openclaw-weixin","blurb":"Weixin channel","order":75},"install":{"npmSpec":"@tencent-weixin/openclaw-weixin","defaultChoice":"npm"}},"_id":"@tencent-weixin/openclaw-weixin@1.0.0","gitHead":"532ce994a01861f8f20bc0512cad9917c95eb400","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-159puZE1An2buiuNM0UhYQ6o6gAMM20o41k5z2MUKB50uDa2flrLYDq1S80SohEl/n4cYuwZy2wL9ImYfc6DXA==","shasum":"af69b5f76e9b8e6a2a42bb7534bcf0a949d2eef8","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@tencent-weixin/openclaw-weixin/-/openclaw-weixin-1.0.0.tgz","fileCount":41,"unpackedSize":163400,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCSf46ub964/QuuyEUMx9YvbDXhln58BYiZNIaVTzMVZwIgczrtDUdaj4R652mIYaCPRnBmFMZadNMSyfBbdg0iMPI="}],"size":46608},"_npmUser":{"name":"anonymous","email":"pumpkinxing@tencent.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"fredynai@tencent.com"},{"name":"anonymous","email":"pumpkinxing@tencent.com"},{"name":"anonymous","email":"jfengjiang@tencent.com"},{"name":"anonymous","email":"yubingluo@tencent.com"},{"name":"anonymous","email":"unixliang@tencent.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-weixin_1.0.0_1774100364440_0.3998026245047481"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-21T13:39:24.601Z","publish_time":1774100364601,"_source_registry_name":"default","contributors":[]},"1.0.1":{"name":"@tencent-weixin/openclaw-weixin","version":"1.0.1","description":"OpenClaw Weixin channel","license":"MIT","author":{"name":"Tencent"},"type":"module","scripts":{"test":"vitest run --coverage","typecheck":"tsc --noEmit","build":"tsc","prepublishOnly":"npm run typecheck && npm run build"},"engines":{"node":">=22"},"dependencies":{"qrcode-terminal":"0.12.0","zod":"4.3.6"},"devDependencies":{"@vitest/coverage-v8":"^3.1.0","typescript":"^5.8.0","vitest":"^3.1.0"},"openclaw":{"extensions":["./index.ts"],"channel":{"id":"openclaw-weixin","label":"openclaw-weixin","selectionLabel":"openclaw-weixin","docsPath":"/channels/openclaw-weixin","docsLabel":"openclaw-weixin","blurb":"Weixin channel","order":75},"install":{"npmSpec":"@tencent-weixin/openclaw-weixin","defaultChoice":"npm"}},"_id":"@tencent-weixin/openclaw-weixin@1.0.1","gitHead":"58d0754d4f66d5b84257f64c525c0ac91335d151","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-r0uRGDo08BW5Ga8ClgQJhewQSDH5uBnjtiKfEFlqrz82E8l8SB017hhJfEiR+RSjNM1uowg5cuJBNlbrJFoMGg==","shasum":"984f7ffa54fa514d10835c1af7a888358f864412","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@tencent-weixin/openclaw-weixin/-/openclaw-weixin-1.0.1.tgz","fileCount":41,"unpackedSize":166302,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGE4BcFxATY0VwztZcI7IO6/66MYvyXDvGwdbDje5MlcAiAPJXTk0r54nfvaPMKayynoxDo8OjfGKPcQdJ9m1+qlkg=="}],"size":47412},"_npmUser":{"name":"anonymous","email":"pumpkinxing@tencent.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"fredynai@tencent.com"},{"name":"anonymous","email":"pumpkinxing@tencent.com"},{"name":"anonymous","email":"jfengjiang@tencent.com"},{"name":"anonymous","email":"yubingluo@tencent.com"},{"name":"anonymous","email":"unixliang@tencent.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-weixin_1.0.1_1774103754793_0.15399974124361804"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-21T14:35:54.954Z","publish_time":1774103754954,"_source_registry_name":"default","contributors":[]},"1.0.2":{"name":"@tencent-weixin/openclaw-weixin","version":"1.0.2","description":"OpenClaw Weixin channel","license":"MIT","author":{"name":"Tencent"},"type":"module","scripts":{"test":"vitest run --coverage","typecheck":"tsc --noEmit","build":"tsc","prepublishOnly":"npm run typecheck && npm run build"},"engines":{"node":">=22"},"dependencies":{"qrcode-terminal":"0.12.0","zod":"4.3.6"},"devDependencies":{"@vitest/coverage-v8":"^3.1.0","typescript":"^5.8.0","vitest":"^3.1.0"},"openclaw":{"extensions":["./index.ts"],"channel":{"id":"openclaw-weixin","label":"openclaw-weixin","selectionLabel":"openclaw-weixin","docsPath":"/channels/openclaw-weixin","docsLabel":"openclaw-weixin","blurb":"Weixin channel","order":75},"install":{"npmSpec":"@tencent-weixin/openclaw-weixin","defaultChoice":"npm"}},"_id":"@tencent-weixin/openclaw-weixin@1.0.2","gitHead":"0fdc154a85330ee762abc9ff22d7e97b863784bf","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-kYPEowHB/0VWt9nQFee/AS6Fb+jbnu38wjkgZDBdKTuJoBL0IBW2obQ0ymgFKBFJJL9rDwnFrb/17ORGZD/X8Q==","shasum":"244baf0a873683a9c350d0f0b5bc055c07b0eb39","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@tencent-weixin/openclaw-weixin/-/openclaw-weixin-1.0.2.tgz","fileCount":41,"unpackedSize":166354,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIE0eFEZMFhvmIUJobGornyMURV6atMB1TNvaOdaJYRe7AiBVfalLaxKf4NrJbn57+DeBcKxzvxqVCZStk6aKfv9n6g=="}],"size":47431},"_npmUser":{"name":"anonymous","email":"pumpkinxing@tencent.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"fredynai@tencent.com"},{"name":"anonymous","email":"pumpkinxing@tencent.com"},{"name":"anonymous","email":"jfengjiang@tencent.com"},{"name":"anonymous","email":"yubingluo@tencent.com"},{"name":"anonymous","email":"unixliang@tencent.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-weixin_1.0.2_1774107804349_0.48819742401851784"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-21T15:43:24.503Z","publish_time":1774107804503,"_source_registry_name":"default","contributors":[]},"1.0.3":{"name":"@tencent-weixin/openclaw-weixin","version":"1.0.3","description":"OpenClaw Weixin channel","license":"MIT","author":{"name":"Tencent"},"type":"module","scripts":{"test":"vitest run --coverage","typecheck":"tsc --noEmit","build":"tsc","prepublishOnly":"npm run typecheck && npm run build"},"engines":{"node":">=22"},"dependencies":{"qrcode-terminal":"0.12.0","zod":"4.3.6"},"devDependencies":{"@vitest/coverage-v8":"^3.1.0","typescript":"^5.8.0","vitest":"^3.1.0"},"openclaw":{"extensions":["./index.ts"],"channel":{"id":"openclaw-weixin","label":"openclaw-weixin","selectionLabel":"openclaw-weixin","docsPath":"/channels/openclaw-weixin","docsLabel":"openclaw-weixin","blurb":"Weixin channel","order":75},"install":{"npmSpec":"@tencent-weixin/openclaw-weixin","defaultChoice":"npm"}},"_id":"@tencent-weixin/openclaw-weixin@1.0.3","gitHead":"003582b5d36ff9456357a6467cce3b1cee1d8809","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-TOo9rb5gt3ce3lJEulFT5Ta4/8ocWkR40wzM7lZ8OM3/fjTk3UHYeNjHmDcZlLeg93XYJKdVUFUEiujrf8zMYw==","shasum":"19f65f26d4af26a25f05cdd5f1dd3c687590f91c","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@tencent-weixin/openclaw-weixin/-/openclaw-weixin-1.0.3.tgz","fileCount":41,"unpackedSize":175169,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEU1EuPFpiVQ9R4HI7M5hgKhrdFJo2iz5Nh7jA9qmql5AiAsX0xSCtyEYYT6pt2bC4BG1d9/4WId+4jyzgRwU5ukOw=="}],"size":49702},"_npmUser":{"name":"anonymous","email":"pumpkinxing@tencent.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"fredynai@tencent.com"},{"name":"anonymous","email":"pumpkinxing@tencent.com"},{"name":"anonymous","email":"jfengjiang@tencent.com"},{"name":"anonymous","email":"yubingluo@tencent.com"},{"name":"anonymous","email":"unixliang@tencent.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-weixin_1.0.3_1774267121871_0.19196961313383687"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-23T11:58:42.025Z","publish_time":1774267122025,"_source_registry_name":"default","contributors":[]},"2.0.1":{"name":"@tencent-weixin/openclaw-weixin","version":"2.0.1","description":"OpenClaw Weixin channel","license":"MIT","author":{"name":"Tencent"},"type":"module","scripts":{"test":"vitest run --coverage","typecheck":"tsc --noEmit","build":"tsc","prepublishOnly":"npm run typecheck && npm run build"},"engines":{"node":">=22"},"dependencies":{"qrcode-terminal":"0.12.0","zod":"4.3.6"},"peerDependencies":{"openclaw":">=2026.3.22"},"devDependencies":{"@vitest/coverage-v8":"^3.1.0","openclaw":"2026.3.23","silk-wasm":"^3.7.1","typescript":"^5.8.0","vitest":"^3.1.0"},"openclaw":{"extensions":["./index.ts"],"channel":{"id":"openclaw-weixin","label":"openclaw-weixin","selectionLabel":"openclaw-weixin","docsPath":"/channels/openclaw-weixin","docsLabel":"openclaw-weixin","blurb":"Weixin channel","order":75},"install":{"npmSpec":"@tencent-weixin/openclaw-weixin","defaultChoice":"npm","minHostVersion":">=2026.3.22"}},"_id":"@tencent-weixin/openclaw-weixin@2.0.1","gitHead":"4f0f169908c9b97a70684ccc7d2113ea6981b389","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-Ib7onvLU8a1ox9craMZxPwrN+ffJQJbToZzeMwoYryBOMIoBlVY0oCuQF7BZvZ7GRQQKOSSAdxvFkO47hKu0rg==","shasum":"06339fdc83226454e1286221889fd62c76ae2463","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@tencent-weixin/openclaw-weixin/-/openclaw-weixin-2.0.1.tgz","fileCount":42,"unpackedSize":182540,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID5D3zA3zEV6D3NV6/aAA0g2jvwGtu7aSKaipme3WAXfAiEAktRRrpqjerwB0OmA5WfV3/H/NYu5lM8DMAUYClQGZ2Y="}],"size":52120},"_npmUser":{"name":"anonymous","email":"pumpkinxing@tencent.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"fredynai@tencent.com"},{"name":"anonymous","email":"pumpkinxing@tencent.com"},{"name":"anonymous","email":"jfengjiang@tencent.com"},{"name":"anonymous","email":"yubingluo@tencent.com"},{"name":"anonymous","email":"unixliang@tencent.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-weixin_2.0.1_1774335892173_0.12790307715213767"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-24T07:04:52.337Z","publish_time":1774335892337,"_source_registry_name":"default","contributors":[]},"2.1.1":{"name":"@tencent-weixin/openclaw-weixin","version":"2.1.1","description":"OpenClaw Weixin channel","license":"MIT","author":{"name":"Tencent"},"type":"module","scripts":{"test":"vitest run --coverage","typecheck":"tsc --noEmit","build":"tsc","prepublishOnly":"npm run typecheck && npm run build"},"engines":{"node":">=22"},"dependencies":{"qrcode-terminal":"0.12.0","zod":"4.3.6"},"devDependencies":{"@vitest/coverage-v8":"^3.1.0","openclaw":"2026.3.23","silk-wasm":"^3.7.1","typescript":"^5.8.0","vitest":"^3.1.0"},"openclaw":{"extensions":["./index.ts"],"channel":{"id":"openclaw-weixin","label":"openclaw-weixin","selectionLabel":"openclaw-weixin","docsPath":"/channels/openclaw-weixin","docsLabel":"openclaw-weixin","blurb":"Weixin channel","order":75},"install":{"npmSpec":"@tencent-weixin/openclaw-weixin","defaultChoice":"npm","minHostVersion":">=2026.3.22"}},"ilink_appid":"bot","_id":"@tencent-weixin/openclaw-weixin@2.1.1","gitHead":"b036e4dcbee0986df3678b88c8863675dab6f4ab","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-lSiTI+9eQQuvZXehuteNps3Ia4/ih5zml6QEgICwA2+9xT1sd5z8C+ldgRfrYd8lZTxYWC8ffkLtG0EVo2E7Ag==","shasum":"574c53a912986bc6b97ae672c1af0327f8be2fcb","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@tencent-weixin/openclaw-weixin/-/openclaw-weixin-2.1.1.tgz","fileCount":42,"unpackedSize":182897,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCcHtM0NSarTosWJa1LVfcocj3p58vm0lV0awsMMVdaNQIgLgvdLj+IfJpZDBQc1RzUXwVO9sPxlC3+8HVGlol1wlM="}],"size":52368},"_npmUser":{"name":"anonymous","email":"pumpkinxing@tencent.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"fredynai@tencent.com"},{"name":"anonymous","email":"pumpkinxing@tencent.com"},{"name":"anonymous","email":"jfengjiang@tencent.com"},{"name":"anonymous","email":"yubingluo@tencent.com"},{"name":"anonymous","email":"unixliang@tencent.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-weixin_2.1.1_1774626935796_0.5856374243018985"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-27T15:55:35.941Z","publish_time":1774626935941,"_source_registry_name":"default","contributors":[]},"2.1.2":{"name":"@tencent-weixin/openclaw-weixin","version":"2.1.2","description":"OpenClaw Weixin channel","license":"MIT","author":{"name":"Tencent"},"type":"module","scripts":{"test":"vitest run --coverage","typecheck":"tsc --noEmit","build":"tsc","prepublishOnly":"npm run typecheck && npm run build"},"engines":{"node":">=22"},"dependencies":{"qrcode-terminal":"0.12.0","zod":"4.3.6"},"devDependencies":{"@vitest/coverage-v8":"^3.1.0","openclaw":"2026.3.23","silk-wasm":"^3.7.1","typescript":"^5.8.0","vitest":"^3.1.0"},"openclaw":{"extensions":["./index.ts"],"channel":{"id":"openclaw-weixin","label":"openclaw-weixin","selectionLabel":"openclaw-weixin","docsPath":"/channels/openclaw-weixin","docsLabel":"openclaw-weixin","blurb":"Weixin channel","order":75},"install":{"npmSpec":"@tencent-weixin/openclaw-weixin","defaultChoice":"npm","minHostVersion":">=2026.3.22"}},"ilink_appid":"bot","_id":"@tencent-weixin/openclaw-weixin@2.1.2","gitHead":"9a79298f37756986611cc46ab47713fef25296f5","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-eUvuBeJrJdI7T7tXNksTpE2Dm+HAwILyvnOB9YEMMBU8AzN5cVnPSIf0TMx2D+jFsW2pZzCAYy9fWQ6S1+VqFw==","shasum":"a3ddab0a1947b0e08f53495fa6bc40591077bda7","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@tencent-weixin/openclaw-weixin/-/openclaw-weixin-2.1.2.tgz","fileCount":41,"unpackedSize":181138,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHZKosgXAhYaSgY5HYfndKffl8lQhyeTv8+7PkH16l6MAiBA0JQQmFq/gkJyvswJL4kgH7Wo+wBSK6WkxV3ifxi8iA=="}],"size":51680},"_npmUser":{"name":"anonymous","email":"pumpkinxing@tencent.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"fredynai@tencent.com"},{"name":"anonymous","email":"pumpkinxing@tencent.com"},{"name":"anonymous","email":"jfengjiang@tencent.com"},{"name":"anonymous","email":"yubingluo@tencent.com"},{"name":"anonymous","email":"unixliang@tencent.com"},{"name":"anonymous","email":"ruiqihong@tencent.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-weixin_2.1.2_1775039932951_0.4202778313352109"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-01T10:38:53.087Z","publish_time":1775039933087,"_source_registry_name":"default","contributors":[]},"2.1.3":{"name":"@tencent-weixin/openclaw-weixin","version":"2.1.3","description":"OpenClaw Weixin channel","license":"MIT","author":{"name":"Tencent"},"type":"module","scripts":{"test":"vitest run --coverage","typecheck":"tsc --noEmit","build":"tsc","prepublishOnly":"npm run typecheck && npm run build"},"engines":{"node":">=22"},"dependencies":{"qrcode-terminal":"0.12.0","zod":"4.3.6"},"devDependencies":{"@vitest/coverage-v8":"^3.1.0","openclaw":"2026.3.23","silk-wasm":"^3.7.1","typescript":"^5.8.0","vitest":"^3.1.0"},"openclaw":{"extensions":["./index.ts"],"channel":{"id":"openclaw-weixin","label":"openclaw-weixin","selectionLabel":"openclaw-weixin","docsPath":"/channels/openclaw-weixin","docsLabel":"openclaw-weixin","blurb":"Weixin channel","order":75},"install":{"npmSpec":"@tencent-weixin/openclaw-weixin","defaultChoice":"npm","minHostVersion":">=2026.3.22"}},"ilink_appid":"bot","gitHead":"a14adf0b9515fb59854a2a58ce238737ebf492ed","_id":"@tencent-weixin/openclaw-weixin@2.1.3","_nodeVersion":"25.8.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-NuzQo4yubbLaZZkpVz5yxEWdRR8KJlQkmUtDbIxKoHjjChvCWG1DAjx4/er95hS8muG/4h4HL7nB4JJqMVrgPw==","shasum":"b6cbc8187a06983ae912aee53f4f55e424680611","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@tencent-weixin/openclaw-weixin/-/openclaw-weixin-2.1.3.tgz","fileCount":42,"unpackedSize":192447,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCQgu0Mph50zZoyhS3zmsMuQZBhdFawTNte7r52b5JgUQIgUvF8gW9KMCn/QKrMvsnd0aa3CwApUi0v4O0t2tHLxaI="}],"size":53656},"_npmUser":{"name":"anonymous","email":"ruiqihong@tencent.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"fredynai@tencent.com"},{"name":"anonymous","email":"pumpkinxing@tencent.com"},{"name":"anonymous","email":"jfengjiang@tencent.com"},{"name":"anonymous","email":"yubingluo@tencent.com"},{"name":"anonymous","email":"unixliang@tencent.com"},{"name":"anonymous","email":"ruiqihong@tencent.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-weixin_2.1.3_1775060695517_0.9183507429102704"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-01T16:24:55.663Z","publish_time":1775060695663,"_source_registry_name":"default","contributors":[]}},"dist-tags":{"latest":"2.1.3","legacy":"1.0.3","compat-host-gte2026.3.0-lt2026.3.22":"1.0.3"},"name":"@tencent-weixin/openclaw-weixin","time":{"created":"2026-03-21T13:39:42.070Z","modified":"2026-04-01T16:25:23.999Z","1.0.0":"2026-03-21T13:39:24.601Z","1.0.1":"2026-03-21T14:35:54.954Z","1.0.2":"2026-03-21T15:43:24.503Z","1.0.3":"2026-03-23T11:58:42.025Z","2.0.1":"2026-03-24T07:04:52.337Z","2.1.1":"2026-03-27T15:55:35.941Z","2.1.2":"2026-04-01T10:38:53.087Z","2.1.3":"2026-04-01T16:24:55.663Z"},"readme":"# WeChat\n\n[简体中文](./README.zh_CN.md)\n\nOpenClaw's WeChat channel plugin, supporting login authorization via QR code scanning.\n\n## Compatibility\n\n| Plugin Version | OpenClaw Version       | npm dist-tag | Status      |\n|---------------|------------------------|--------------|-------------|\n| 2.0.x         | >=2026.3.22            | `latest`     | Active      |\n| 1.0.x         | >=2026.1.0 <2026.3.22  | `legacy`     | Maintenance |\n\n> The plugin checks the host version at startup and will refuse to load if the\n> running OpenClaw version is outside the supported range.\n\n## Prerequisites\n\n[OpenClaw](https://docs.openclaw.ai/install) must be installed (the `openclaw` CLI needs to be available).\n\nCheck your version: `openclaw --version`\n\n## Quick Install\n\n```bash\nnpx -y @tencent-weixin/openclaw-weixin-cli install\n```\n\n## Manual Installation\n\nIf the quick install doesn't work, follow these steps manually:\n\n### 1. Install the plugin\n\n```bash\nopenclaw plugins install \"@tencent-weixin/openclaw-weixin\"\n```\n\n### 2. Enable the plugin\n\n```bash\nopenclaw config set plugins.entries.openclaw-weixin.enabled true\n```\n\n### 3. QR code login\n\n```bash\nopenclaw channels login --channel openclaw-weixin\n```\n\nA QR code will appear in the terminal. Scan it with your phone and confirm the authorization. Once confirmed, the login credentials will be saved locally automatically — no further action is needed.\n\n### 4. Restart the gateway\n\n```bash\nopenclaw gateway restart\n```\n\n## Adding More WeChat Accounts\n\n```bash\nopenclaw channels login --channel openclaw-weixin\n```\n\nEach QR code login creates a new account entry, supporting multiple WeChat accounts online simultaneously.\n\n## Multi-Account Context Isolation\n\nBy default, all channels share the same AI conversation context. To isolate conversation context for each WeChat account:\n\n```bash\nopenclaw config set agents.mode per-channel-per-peer\n```\n\nThis gives each \"WeChat account + message sender\" combination its own independent AI memory, preventing context cross-talk between accounts.\n\n## Backend API Protocol\n\nThis plugin communicates with the backend gateway via HTTP JSON API. Developers integrating with their own backend need to implement the following interfaces.\n\nAll endpoints use `POST` with JSON request and response bodies. Common request headers:\n\n| Header | Description |\n|--------|-------------|\n| `Content-Type` | `application/json` |\n| `AuthorizationType` | Fixed value `ilink_bot_token` |\n| `Authorization` | `Bearer <token>` (obtained after login) |\n| `X-WECHAT-UIN` | Base64-encoded random uint32 |\n\n### Endpoint List\n\n| Endpoint | Path | Description |\n|----------|------|-------------|\n| getUpdates | `getupdates` | Long-poll for new messages |\n| sendMessage | `sendmessage` | Send a message (text/image/video/file) |\n| getUploadUrl | `getuploadurl` | Get CDN upload pre-signed URL |\n| getConfig | `getconfig` | Get account config (typing ticket, etc.) |\n| sendTyping | `sendtyping` | Send/cancel typing status indicator |\n\n### getUpdates\n\nLong-polling endpoint. The server responds when new messages arrive or on timeout.\n\n**Request body:**\n\n```json\n{\n  \"get_updates_buf\": \"\"\n}\n```\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `get_updates_buf` | `string` | Sync cursor from the previous response; empty string for the first request |\n\n**Response body:**\n\n```json\n{\n  \"ret\": 0,\n  \"msgs\": [...],\n  \"get_updates_buf\": \"<new cursor>\",\n  \"longpolling_timeout_ms\": 35000\n}\n```\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `ret` | `number` | Return code, `0` = success |\n| `errcode` | `number?` | Error code (e.g., `-14` = session timeout) |\n| `errmsg` | `string?` | Error description |\n| `msgs` | `WeixinMessage[]` | Message list (structure below) |\n| `get_updates_buf` | `string` | New sync cursor to pass in the next request |\n| `longpolling_timeout_ms` | `number?` | Server-suggested long-poll timeout for the next request (ms) |\n\n### sendMessage\n\nSend a message to a user.\n\n**Request body:**\n\n```json\n{\n  \"msg\": {\n    \"to_user_id\": \"<target user ID>\",\n    \"context_token\": \"<conversation context token>\",\n    \"item_list\": [\n      {\n        \"type\": 1,\n        \"text_item\": { \"text\": \"Hello\" }\n      }\n    ]\n  }\n}\n```\n\n### getUploadUrl\n\nGet CDN upload pre-signed parameters. Call this endpoint before uploading a file to obtain `upload_param` and `thumb_upload_param`.\n\n**Request body:**\n\n```json\n{\n  \"filekey\": \"<file identifier>\",\n  \"media_type\": 1,\n  \"to_user_id\": \"<target user ID>\",\n  \"rawsize\": 12345,\n  \"rawfilemd5\": \"<plaintext MD5>\",\n  \"filesize\": 12352,\n  \"thumb_rawsize\": 1024,\n  \"thumb_rawfilemd5\": \"<thumbnail plaintext MD5>\",\n  \"thumb_filesize\": 1040\n}\n```\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `media_type` | `number` | `1` = IMAGE, `2` = VIDEO, `3` = FILE |\n| `rawsize` | `number` | Original file plaintext size |\n| `rawfilemd5` | `string` | Original file plaintext MD5 |\n| `filesize` | `number` | Ciphertext size after AES-128-ECB encryption |\n| `thumb_rawsize` | `number?` | Thumbnail plaintext size (required for IMAGE/VIDEO) |\n| `thumb_rawfilemd5` | `string?` | Thumbnail plaintext MD5 (required for IMAGE/VIDEO) |\n| `thumb_filesize` | `number?` | Thumbnail ciphertext size (required for IMAGE/VIDEO) |\n\n**Response body:**\n\n```json\n{\n  \"upload_param\": \"<original image upload encrypted parameters>\",\n  \"thumb_upload_param\": \"<thumbnail upload encrypted parameters>\"\n}\n```\n\n### getConfig\n\nGet account configuration, including the typing ticket.\n\n**Request body:**\n\n```json\n{\n  \"ilink_user_id\": \"<user ID>\",\n  \"context_token\": \"<optional, conversation context token>\"\n}\n```\n\n**Response body:**\n\n```json\n{\n  \"ret\": 0,\n  \"typing_ticket\": \"<base64-encoded typing ticket>\"\n}\n```\n\n### sendTyping\n\nSend or cancel the typing status indicator.\n\n**Request body:**\n\n```json\n{\n  \"ilink_user_id\": \"<user ID>\",\n  \"typing_ticket\": \"<obtained from getConfig>\",\n  \"status\": 1\n}\n```\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `status` | `number` | `1` = typing, `2` = cancel typing |\n\n### Message Structure\n\n#### WeixinMessage\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `seq` | `number?` | Message sequence number |\n| `message_id` | `number?` | Unique message ID |\n| `from_user_id` | `string?` | Sender ID |\n| `to_user_id` | `string?` | Receiver ID |\n| `create_time_ms` | `number?` | Creation timestamp (ms) |\n| `session_id` | `string?` | Session ID |\n| `message_type` | `number?` | `1` = USER, `2` = BOT |\n| `message_state` | `number?` | `0` = NEW, `1` = GENERATING, `2` = FINISH |\n| `item_list` | `MessageItem[]?` | Message content list |\n| `context_token` | `string?` | Conversation context token, must be passed back when replying |\n\n#### MessageItem\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `type` | `number` | `1` TEXT, `2` IMAGE, `3` VOICE, `4` FILE, `5` VIDEO |\n| `text_item` | `{ text: string }?` | Text content |\n| `image_item` | `ImageItem?` | Image (with CDN reference and AES key) |\n| `voice_item` | `VoiceItem?` | Voice (SILK encoded) |\n| `file_item` | `FileItem?` | File attachment |\n| `video_item` | `VideoItem?` | Video |\n| `ref_msg` | `RefMessage?` | Referenced message |\n\n#### CDN Media Reference (CDNMedia)\n\nAll media types (image/voice/file/video) are transferred via CDN using AES-128-ECB encryption:\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `encrypt_query_param` | `string?` | Encrypted parameters for CDN download/upload |\n| `aes_key` | `string?` | Base64-encoded AES-128 key |\n\n### CDN Upload Flow\n\n1. Calculate the file's plaintext size, MD5, and ciphertext size after AES-128-ECB encryption\n2. If a thumbnail is needed (image/video), calculate the thumbnail's plaintext and ciphertext parameters as well\n3. Call `getUploadUrl` to get `upload_param` (and `thumb_upload_param`)\n4. Encrypt the file content with AES-128-ECB and PUT upload to the CDN URL\n5. Encrypt and upload the thumbnail in the same way\n6. Use the returned `encrypt_query_param` to construct a `CDNMedia` reference, include it in the `MessageItem`, and send\n\n> For complete type definitions, see [`src/api/types.ts`](src/api/types.ts). For API call implementations, see [`src/api/api.ts`](src/api/api.ts).\n\n## Uninstall\n\n```bash\nopenclaw plugins uninstall @tencent-weixin/openclaw-weixin\n```\n\n## Troubleshooting\n\n### \"requires OpenClaw >=2026.3.22\" error\n\nYour OpenClaw version is too old for this plugin version. Check with:\n\n```bash\nopenclaw --version\n```\n\nInstall the legacy plugin line instead:\n\n```bash\nopenclaw plugins install @tencent-weixin/openclaw-weixin@legacy\n```\n\n### Channel shows \"OK\" but doesn't connect\n\nEnsure `plugins.entries.openclaw-weixin.enabled` is `true` in `~/.openclaw/openclaw.json`:\n\n```bash\nopenclaw config set plugins.entries.openclaw-weixin.enabled true\nopenclaw gateway restart\n```","users":{}}