|
| 1 | +# WeClawBot-API |
| 2 | + |
| 3 | +一个基于 Go 实现的 `微信ClawBot` (iLink) 机器人 API 服务。 |
| 4 | + |
| 5 | +**它体积极小(≈10MB),内存占用极低(≈10MB),极易部署(Docker/二进制)**,可以独立运行,直接提供 HTTP API 给其他程序调用。 |
| 6 | + |
| 7 | +> [!TIP] |
| 8 | +> 没错!个人微信推送通知它来了!~~再也不用~~折腾企业微信/第三方服务号了! |
| 9 | +> |
| 10 | +> **当前灰度中,可用性待观察* |
| 11 | +
|
| 12 | +## 功能特性 |
| 13 | + |
| 14 | +- **多账号支持**:支持同时登录多个微信号,每个账号独立推送、互不干扰 |
| 15 | +- **扫码登录**:控制台直接打印二维码,微信扫码即可完成授权 |
| 16 | +- **持久化存储**:登录凭证(Token、游标等)自动保存,重启后自动重连 |
| 17 | +- **命令行交互**:内置简易控制台,可直接在终端中收发微信消息 |
| 18 | +- **HTTP API**:提供标准 RESTful 接口,支持通过 API 发送文本消息及设置“正在输入”状态 |
| 19 | + |
| 20 | +## 部署 |
| 21 | + |
| 22 | +### Docker Compose (推荐) |
| 23 | + |
| 24 | +创建 `docker-compose.yml` 文件: |
| 25 | + |
| 26 | +```yaml |
| 27 | +name: weclawbot-api |
| 28 | +services: |
| 29 | + weclawbot-api: |
| 30 | + image: cp0204/weclawbot-api:latest |
| 31 | + container_name: weclawbot-api |
| 32 | + ports: |
| 33 | + - "26322:26322" |
| 34 | + volumes: |
| 35 | + - ./config:/app/config |
| 36 | + restart: unless-stopped |
| 37 | +``` |
| 38 | +
|
| 39 | +### Docker Run |
| 40 | +
|
| 41 | +```bash |
| 42 | +docker run -d \ |
| 43 | + --name weclawbot-api \ |
| 44 | + -p 26322:26322 \ |
| 45 | + -v ./config:/app/config \ |
| 46 | + --restart unless-stopped \ |
| 47 | + cp0204/weclawbot-api:latest |
| 48 | +``` |
| 49 | + |
| 50 | +### 初次扫码登录 |
| 51 | + |
| 52 | +容器启动后,进入容器终端(sh),输入 `weclawbot-api` 扫码登录,授权后的信息将保存在挂载的 `config` 目录下。 |
| 53 | + |
| 54 | +NAS 部署可通过 WebUI 进入容器终端,也可以在宿主机上通过以下命令进入: |
| 55 | + |
| 56 | +```bash |
| 57 | +# 进入容器终端 |
| 58 | +docker exec -it weclawbot-api sh |
| 59 | +# 运行 weclawbot-api |
| 60 | +weclawbot-api |
| 61 | +``` |
| 62 | + |
| 63 | +> [!TIP] |
| 64 | +> 授权成功后,在微信发一条消息给`微信ClawBot`,否则无法激活 API 发信。 |
| 65 | +
|
| 66 | +> [!WARNING] |
| 67 | +> 请妥善保管 `config/auth.json` 文件及 `api_token`,不要泄露。 |
| 68 | +
|
| 69 | +## 常用命令 |
| 70 | + |
| 71 | +- `/login` : 发起新的扫码登录流程 |
| 72 | +- `/bots` : 列出当前所有已登录 `bot_id` 及其 `api_token` |
| 73 | +- `/bot <序号>` : 切换当前活跃发送身份 |
| 74 | +- `/del <序号>` : 删除指定索引的 Bot 账号配置 |
| 75 | + |
| 76 | +## API 文档 |
| 77 | + |
| 78 | +> [!TIP] |
| 79 | +> 新手省流版,发消息直接替换参数访问: |
| 80 | +> ``` |
| 81 | +> http://192.168.8.8:26322/bots/{bot_id}/messages?token={api_token}&text=Hello |
| 82 | +> ``` |
| 83 | +
|
| 84 | +API 支持 `GET` 和 `POST` 请求,兼容以下多种提交方式: |
| 85 | +
|
| 86 | +- GET |
| 87 | +- POST |
| 88 | + - `application/json` |
| 89 | + - `application/x-www-form-urlencoded` |
| 90 | + - `multipart/form-data` |
| 91 | +
|
| 92 | +### 身份验证 |
| 93 | +
|
| 94 | +所有接口均需验证 `api_token`(可通过 `/bots` 命令或查看 `config/auth.json` 获取) |
| 95 | +
|
| 96 | +你可以通过以下任一方式传递 Token: |
| 97 | +
|
| 98 | +- **Header**: `Authorization: Bearer <api_token>` |
| 99 | +- **Body/Query**: `token=<api_token>` |
| 100 | +
|
| 101 | +
|
| 102 | +### 发送消息 |
| 103 | +
|
| 104 | +**Endpoint:** `/bots/{bot_id}/messages` |
| 105 | +
|
| 106 | +**参数:** |
| 107 | +- `text`: 消息文本内容。 |
| 108 | +
|
| 109 | +**示例:** |
| 110 | +```bash |
| 111 | +curl http://192.168.8.8:26322/bots/{xxx@im.bot}/messages?token={api_token}&text=Hello |
| 112 | +``` |
| 113 | +
|
| 114 | +### 发送输入状态 |
| 115 | + |
| 116 | +**Endpoint:** `/bots/{bot_id}/typing` |
| 117 | + |
| 118 | +**参数:** |
| 119 | +- `status`: `1`=正在输入,`2`=停止输入 |
| 120 | + |
| 121 | +**示例:** |
| 122 | +```bash |
| 123 | +curl http://192.168.8.8:26322/bots/{xxx@im.bot}/typing?token={api_token}&status=1 |
| 124 | +``` |
| 125 | + |
| 126 | +### 响应格式 |
| 127 | + |
| 128 | +所有 API 均返回标准 JSON 结构: |
| 129 | + |
| 130 | +**成功响应 (200 OK):** |
| 131 | +```json |
| 132 | +{ |
| 133 | + "code": 200, |
| 134 | + "message": "OK" |
| 135 | +} |
| 136 | +``` |
| 137 | + |
| 138 | +**错误响应 (4xx/5xx):** |
| 139 | +```json |
| 140 | +{ |
| 141 | + "code": 401, |
| 142 | + "error": "Unauthorized" |
| 143 | +} |
| 144 | +``` |
| 145 | + |
| 146 | +## 致谢 |
| 147 | + |
| 148 | +- 微信官方插件 [@tencent-weixin/openclaw-weixin](https://www.npmjs.com/package/@tencent-weixin/openclaw-weixin) |
0 commit comments