logo
0
0
WeChat Login

微信 Claw Bot(@tencent-weixin/openclaw-weixin)

基于腾讯官方开放的 openclaw-weixin/openclaw-weixin-api/openclaw-weixin-cli 实现的微信个人账号 Bot,支持接入任意 AI 模型,实现微信自动对话。


简介

2026 年腾讯通过 OpenClaw 平台正式开放了微信个人账号的 Bot API,官方名称为 微信 ClawBot 插件功能,底层协议为 iLink,接入域名 ilinkai.weixin.qq.com 为腾讯官方服务器。

本项目提供 Python 和 Node.js 两种实现,可直接接入兼容 Anthropic 格式的 AI 接口(Claude、GPT 等),实现收到微信消息后自动 AI 回复。免 openclaw 部署和登录,直接接入与调用。


功能

  • 扫码登录微信(生成二维码链接)
  • 长轮询实时接收消息
  • 调用 AI 接口生成回复
  • 发送前显示"正在输入"状态
  • 内置梯度重试(AI 接口失败自动重试)
  • 配置文件管理:首次运行引导创建,支持交互式修改,API Key 脱敏显示
  • 24 小时自动重连:到期前预警 → 用户确认 → 无缝切换新连接,全程不断线
  • Bot 指令系统/help /指令 查看指令列表,/time 查询剩余连接时间,/重新连接 手动触发重连,首次交互自动推送指令列表

文件结构

. ├── bot.py # Python 实现(推荐) ├── bot.js # Node.js 实现 ├── dusapi.py # AI 接口封装(Python,兼容 Anthropic 格式) ├── config.json # 配置文件(首次运行自动生成,勿提交到版本控制) └── README.md

快速开始

懒得折腾? 直接下载打包好的 exe 使用:Releases

Python 版

安装依赖:

pip install aiohttp requests

运行:

python bot.py

首次运行会自动引导配置,按提示填写即可。


Node.js 版

要求: Node.js 18+

配置 package.json(如不存在则创建):

{ "type": "module" }

运行:

node bot.js

登录流程

  1. 运行后若无配置文件,进入交互式配置向导
  2. 配置完成后终端打印二维码链接
  3. 将链接在手机微信中打开,按提示连接
  4. 扫码确认后终端显示"登录成功"及可用指令列表
  5. 在微信中向 Bot 发送第一条消息,Bot 自动回复指令列表
  6. 之后的消息均由 AI 自动回复

配置文件(config.json)

首次运行自动生成,交互式填写,留空使用默认值。

{ "api_key": "your-api-key", "base_url": "https://api.dusapi.com", "model": "gpt-5", "prompt": "你是一个有帮助的AI助手,请用中文简洁地回复。字数尽量少一些" }

再次运行时会显示当前配置(API Key 仅显示首尾各 5 位),选择继续或重新配置:

============================================================ 检测到配置文件,当前配置如下: ============================================================ API Key : sk-d0*****************************e8c5c API 地址 : https://api.dusapi.com 模型 : gpt-5 提示词 : 你是一个有帮助的AI助手,请用中文简洁地回复。字数尽量... ------------------------------------------------------------ 使用此配置继续?(直接回车或输入 Y 继续 / 输入 N 重新配置):

注意:当前版本仅支持 DusAPI。如需接入其他接口,请拉取源代码自行修改 dusapi.py


24 小时自动重连

iLink 连接有效期为 24 小时,Bot 内置全自动续连机制。

流程

登录成功 → 开始 24h 倒计时 ↓(剩余 2h 时) 向最近聊天用户发送预警:是否现在重新连接?(Y/N) ├─ 回复 Y → 立即重连,发送新二维码 ├─ 回复 N → 每 30 分钟再次询问 └─ 最后 30 分钟 → 强制重连,无需确认 扫码成功 → 新 token 原子替换,旧连接无缝切换,不掉线

可调参数(顶部 RECONNECT_CONFIG

测试时可将数值改小,无需等 24 小时验证流程:

参数说明生产默认值测试建议值
session_duration会话总时长(秒)24 * 3600300
warning_before提前多久发警告(秒)2 * 360060
reminder_interval回复 N 后多久再问(秒)30 * 6030
force_before最后多久强制重连(秒)30 * 6060
qrcode_scan_timeout等待扫码最长时间(秒)600120

Python 示例(测试配置):

RECONNECT_CONFIG = { "session_duration": 300, "warning_before": 60, "reminder_interval": 30, "force_before": 60, "qrcode_scan_timeout": 120, }

Bot 指令

指令说明
/help/指令查看全部指令列表
/time查询当前连接剩余时间
/重新连接手动触发重新连接(发送后需回复 Y 确认 / N 取消)

说明:

  • 用户首次发送消息时,Bot 自动回复可用指令列表
  • /重新连接 发出后 Bot 会询问确认,回复 Y 立即重连并发送新二维码,回复 N 取消;若重连正在进行中则提示等待
  • 非指令内容均转发给 AI 接口处理
  • 后续如需扩展指令,在消息循环中添加对应分支,并更新 COMMANDS_MSG 常量即可

AI 接口说明(dusapi.py)

DusAPI 封装了兼容 Anthropic 格式的 HTTP 接口,支持所有使用 x-api-key + /v1/messages 格式的服务,包括:

  • DusAPI(兼容多模型)
  • Anthropic 官方 API
  • 其他 Anthropic 格式的第三方代理

DusConfig 参数:

参数说明默认值
api_keyAPI 密钥必填
base_url接口地址必填
model1模型名称claude-sonnet-4-5
prompt系统提示词你是一个有帮助的AI助手。

iLink Bot API 核心说明

请求头

每个请求都需要携带以下 Header:

Content-Type: application/json AuthorizationType: ilink_bot_token X-WECHAT-UIN: <随机uint32转base64,每次请求重新生成> Authorization: Bearer <bot_token>

消息收发流程

POST getupdates(长轮询,服务器 hold 35s) └─ 收到用户消息 ├─ [手动重连待确认] Y → 立即重连 / N → 取消 ├─ [定时预警待确认] Y → 触发重连 / N → 推迟提醒 ├─ [首次] 发送指令列表,等待下一条消息 ├─ [/help 或 /指令] 返回指令列表 ├─ [/time] 返回剩余时间 ├─ [/重新连接] 发送 Y/N 确认提示 ├─ POST getconfig → 获取 typing_ticket(每用户缓存,有效24h) ├─ POST sendtyping { status: 1 } → 显示"正在输入" ├─ 调用 AI 接口 ├─ POST sendmessage → 发送回复 └─ POST sendtyping { status: 2 } → 取消"正在输入"

sendmessage 必填字段

官方 SDK 要求 sendmessage 包含以下完整结构,缺少任意字段会导致消息静默丢失(HTTP 200 但不投递):

{ "msg": { "from_user_id": "", "to_user_id": "<用户ID@im.wechat>", "client_id": "openclaw-weixin-<随机hex>", "message_type": 2, "message_state": 2, "context_token": "<从收到的消息中原样取>", "item_list": [ { "type": 1, "text_item": { "text": "回复内容" } } ] }, "base_info": { "channel_version": "1.0.2" } }

注意context_token 必须使用当前收到消息中的值,不可复用旧消息的 token。


注意事项

  1. 每次扫码登录 Bot ID 会变化,这是 iLink 平台的设计,属于正常现象。
  2. 仅限合规使用,需遵守《微信 ClawBot 功能使用条款》,腾讯保留对内容过滤和限速的权利。
  3. 本项目仅支持文本消息,图片/语音/文件等媒体消息需额外实现 CDN 加密上传流程。
  4. Bot 不建议用于核心业务,腾讯可随时变更或终止该服务。
  5. config.json 含有 API Key,请勿提交到版本控制(已在 .gitignore 中排除)。

依赖

环境依赖
Pythonaiohttprequests
Node.js无需额外安装(Node.js 18+ 内置 fetch 和 readline)

相关资源

About

forked from https://github.com/SiverKing/weixin-ClawBot-API

Language
Python62.6%
JavaScript37.4%