# NapCat API 端口使用报告

> 调研时间：2026-03-15  
> 版本：基于 NapCat v4.x 版本  
> 官方文档：https://napneko.github.io/

---

## 目录

1. [概述](#1-概述)
2. [WebUI 管理界面](#2-webui-管理界面)
3. [OneBot11 HTTP API](#3-onebot11-http-api)
4. [WebSocket API](#4-websocket-api)
5. [常用 API 接口](#5-常用-api-接口)
6. [配置文件说明](#6-配置文件说明)
7. [curl 命令示例](#7-curl-命令示例)
8. [参考资源](#8-参考资源)

---

## 1. 概述

NapCat 是一个基于 NTQQ 的现代化 QQ Bot 框架，实现了 OneBot v11 协议标准。它支持多种通信方式：

- **HTTP API**：RESTful API 调用
- **WebSocket Server**：正向 WebSocket（服务器模式）
- **WebSocket Client**：反向 WebSocket（客户端模式）

### 通信方式对比

| 方式 | 方向 | 端口/地址 | 适用场景 |
|------|------|-----------|----------|
| HTTP Server | 服务端 | 自定义（默认3000） | 主动调用API |
| HTTP Client | 客户端 | 上报到指定URL | 被动接收消息 |
| WebSocket Server | 服务端 | 自定义（默认3001） | 双向通信 |
| WebSocket Client | 客户端 | 连接到指定WS地址 | 连接框架 |

---

## 2. WebUI 管理界面

WebUI 是 NapCat 的可视化管理界面，用于配置网络和查看日志。

### 2.1 访问信息

| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| 监听地址 | `0.0.0.0` | 监听所有网络接口 |
| 端口 | `6099` | WebUI 访问端口 |
| Token | 随机生成 | 登录验证密钥 |

### 2.2 访问 URL

```
http://IP地址:6099/webui
```

**注意**：
- 首次启动时，Token 会在启动日志中显示
- 格式：`[WebUi] WebUi Local Panel Url: http://127.0.0.1:6099/webui?token=xxxx`
- 若端口被占用，会自动尝试 `port+1`，最多尝试100次

### 2.3 WebUI 配置文件

配置文件路径：`webui.json`

```json
{
  "host": "0.0.0.0",
  "port": 6099,
  "token": "your-token-here",
  "loginRate": 3
}
```

### 2.4 WebUI 功能

- QQ 登录（二维码登录）
- 网络配置管理（HTTP/WS 服务端和客户端）
- 日志查看
- 系统配置

---

## 3. OneBot11 HTTP API

### 3.1 HTTP Server 配置

在 WebUI 或配置文件中添加 HTTP 服务器：

```json
{
  "network": {
    "httpServers": [
      {
        "name": "HttpServer",
        "enable": true,
        "host": "0.0.0.0",
        "port": 3000,
        "token": "your-access-token",
        "messagePostFormat": "array"
      }
    ]
  }
}
```

### 3.2 HTTP 配置参数说明

| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `name` | string | 必填 | 配置名称，唯一标识 |
| `enable` | boolean | false | 是否启用 |
| `host` | string | 0.0.0.0 | 监听主机地址 |
| `port` | number | 3000 | 监听端口 |
| `token` | string | 空 | 访问令牌，用于鉴权 |
| `messagePostFormat` | string | array | 消息上报格式：string/array |

### 3.3 HTTP API 调用方式

#### 请求格式

```
POST http://host:port/{action}
```

#### 认证方式

**方式一：Query 参数**
```
POST http://localhost:3000/send_private_msg?access_token=your-token
```

**方式二：请求头**
```http
Authorization: Bearer your-token
```

**方式三：自定义 Header**
```http
Authorization: your-token
```

### 3.4 HTTP Client 配置（反向 HTTP）

用于将消息上报到指定的 HTTP 地址：

```json
{
  "network": {
    "httpClients": [
      {
        "name": "httpClient",
        "enable": true,
        "url": "http://localhost:8080",
        "messagePostFormat": "array",
        "reportSelfMessage": false,
        "token": "",
        "debug": false
      }
    ]
  }
}
```

---

## 4. WebSocket API

### 4.1 WebSocket Server（正向 WS）

NapCat 作为 WebSocket 服务器，等待客户端连接。

#### 配置示例

```json
{
  "network": {
    "websocketServers": [
      {
        "name": "WsServer",
        "enable": true,
        "host": "0.0.0.0",
        "port": 3001,
        "token": "your-token",
        "messagePostFormat": "array",
        "reportSelfMessage": false,
        "heartInterval": 30000,
        "enableForcePushEvent": true,
        "debug": false
      }
    ]
  }
}
```

#### 连接 URL

```
ws://host:port/
```

#### 消息格式

**发送消息（客户端 → 服务器）：**
```json
{
  "action": "send_private_msg",
  "params": {
    "user_id": 123456789,
    "message": "Hello"
  },
  "echo": "unique-id"
}
```

**接收消息（服务器 → 客户端）：**
```json
{
  "post_type": "message",
  "message_type": "private",
  "user_id": 123456789,
  "message": "Hello"
}
```

### 4.2 WebSocket Client（反向 WS）

NapCat 作为 WebSocket 客户端，主动连接到服务器。

#### 配置示例

```json
{
  "network": {
    "websocketClients": [
      {
        "name": "WsClient",
        "enable": true,
        "url": "ws://127.0.0.1:8080/onebot/v11/ws",
        "token": "your-token",
        "messagePostFormat": "array",
        "reportSelfMessage": false,
        "heartInterval": 30000,
        "reconnectInterval": 3000
      }
    ]
  }
}
```

#### 常见框架对接地址

| 框架 | WebSocket URL |
|------|---------------|
| NoneBot2 | `ws://127.0.0.1:8080/onebot/v11/ws` |
| Koishi | `ws://127.0.0.1:5140/onebot` |
| AstrBot | `ws://127.0.0.1:6199/ws` |

---

## 5. 常用 API 接口

### 5.1 消息相关接口

#### 发送私聊消息

**接口：** `send_private_msg`

**请求参数：**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `user_id` | int64 | 是 | 对方 QQ 号 |
| `message` | string/array | 是 | 消息内容 |
| `auto_escape` | boolean | 否 | 是否纯文本发送 |

**请求示例：**
```json
{
  "user_id": 123456789,
  "message": "Hello World"
}
```

**返回示例：**
```json
{
  "status": "ok",
  "retcode": 0,
  "data": {
    "message_id": 12345
  }
}
```

---

#### 发送群消息

**接口：** `send_group_msg`

**请求参数：**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `group_id` | int64 | 是 | 群号 |
| `message` | string/array | 是 | 消息内容 |
| `auto_escape` | boolean | 否 | 是否纯文本发送 |

**请求示例：**
```json
{
  "group_id": 987654321,
  "message": "Hello Group"
}
```

---

#### 发送消息（通用）

**接口：** `send_msg`

**请求参数：**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `message_type` | string | 否 | 消息类型：private/group |
| `user_id` | int64 | 条件 | 私聊时的 QQ 号 |
| `group_id` | int64 | 条件 | 群聊时的群号 |
| `message` | string/array | 是 | 消息内容 |

---

#### 撤回消息

**接口：** `delete_msg`

**请求参数：**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `message_id` | int32 | 是 | 消息 ID |

---

### 5.2 群管理接口

#### 获取群列表

**接口：** `get_group_list`

**请求参数：** 无

**返回示例：**
```json
{
  "status": "ok",
  "retcode": 0,
  "data": [
    {
      "group_id": 123456789,
      "group_name": "群名称",
      "member_count": 100,
      "max_member_count": 500
    }
  ]
}
```

---

#### 获取群信息

**接口：** `get_group_info`

**请求参数：**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `group_id` | int64 | 是 | 群号 |
| `no_cache` | boolean | 否 | 是否不使用缓存 |

**返回示例：**
```json
{
  "status": "ok",
  "retcode": 0,
  "data": {
    "group_id": 123456789,
    "group_name": "群名称",
    "member_count": 100,
    "max_member_count": 500
  }
}
```

---

#### 获取群成员列表

**接口：** `get_group_member_list`

**请求参数：**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `group_id` | int64 | 是 | 群号 |

**返回示例：**
```json
{
  "status": "ok",
  "retcode": 0,
  "data": [
    {
      "user_id": 123456789,
      "nickname": "昵称",
      "card": "群名片",
      "role": "member",
      "join_time": 1234567890
    }
  ]
}
```

---

#### 获取群成员信息

**接口：** `get_group_member_info`

**请求参数：**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `group_id` | int64 | 是 | 群号 |
| `user_id` | int64 | 是 | QQ 号 |
| `no_cache` | boolean | 否 | 是否不使用缓存 |

---

#### 群组踢人

**接口：** `set_group_kick`

**请求参数：**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `group_id` | int64 | 是 | 群号 |
| `user_id` | int64 | 是 | 要踢的 QQ 号 |
| `reject_add_request` | boolean | 否 | 是否拒绝加群申请 |

---

#### 群组禁言

**接口：** `set_group_ban`

**请求参数：**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `group_id` | int64 | 是 | 群号 |
| `user_id` | int64 | 是 | 要禁言的 QQ 号 |
| `duration` | int32 | 否 | 禁言时长（秒），默认1800 |

---

#### 设置群管理员

**接口：** `set_group_admin`

**请求参数：**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `group_id` | int64 | 是 | 群号 |
| `user_id` | int64 | 是 | 要设置的 QQ 号 |
| `enable` | boolean | 否 | true为设置，false为取消 |

---

#### 设置群名片

**接口：** `set_group_card`

**请求参数：**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `group_id` | int64 | 是 | 群号 |
| `user_id` | int64 | 是 | QQ 号 |
| `card` | string | 否 | 群名片内容 |

---

#### 设置群名

**接口：** `set_group_name`

**请求参数：**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `group_id` | int64 | 是 | 群号 |
| `group_name` | string | 是 | 新群名 |

---

#### 退出群组

**接口：** `set_group_leave`

**请求参数：**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `group_id` | int64 | 是 | 群号 |
| `is_dismiss` | boolean | 否 | 是否解散（群主专用） |

---

#### 设置群专属头衔

**接口：** `set_group_special_title`

**请求参数：**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `group_id` | int64 | 是 | 群号 |
| `user_id` | int64 | 是 | QQ 号 |
| `special_title` | string | 否 | 专属头衔 |
| `duration` | int32 | 否 | 有效期（秒），-1为永久 |

---

### 5.3 账号相关接口

#### 获取登录号信息

**接口：** `get_login_info`

**返回示例：**
```json
{
  "status": "ok",
  "retcode": 0,
  "data": {
    "user_id": 123456789,
    "nickname": "QQ昵称"
  }
}
```

---

#### 获取好友列表

**接口：** `get_friend_list`

**返回示例：**
```json
{
  "status": "ok",
  "retcode": 0,
  "data": [
    {
      "user_id": 123456789,
      "nickname": "好友昵称"
    }
  ]
}
```

---

#### 获取版本信息

**接口：** `get_version_info`

**返回示例：**
```json
{
  "status": "ok",
  "retcode": 0,
  "data": {
    "app_name": "NapCat",
    "app_version": "4.17.20",
    "protocol_version": "v11"
  }
}
```

---

#### 获取状态

**接口：** `get_status`

**返回示例：**
```json
{
  "status": "ok",
  "retcode": 0,
  "data": {
    "online": true,
    "good": true
  }
}
```

---

### 5.4 消息类型格式

#### 文本消息

```json
{
  "type": "text",
  "data": {
    "text": "消息内容"
  }
}
```

#### 图片消息

```json
{
  "type": "image",
  "data": {
    "file": "图片路径或URL"
  }
}
```

#### At 消息

```json
{
  "type": "at",
  "data": {
    "qq": "123456789"
  }
}
```

#### 合并消息段

```json
[
  {"type": "text", "data": {"text": "你好"}},
  {"type": "at", "data": {"qq": "123456789"}},
  {"type": "text", "data": {"text": "欢迎！"}}
]
```

---

## 6. 配置文件说明

### 6.1 配置文件位置

- **Windows**: `NapCat 安装目录/config/`
- **Linux**: `/opt/QQ/resources/app/app_launcher/napcat/config/`
- **Docker**: `/app/napcat/config/`

### 6.2 主配置文件结构

```json
{
  "network": {
    "httpServers": [],
    "httpClients": [],
    "websocketServers": [],
    "websocketClients": []
  },
  "musicSignUrl": "",
  "enableLocalFile2Url": false,
  "parseMultMsg": false
}
```

### 6.3 完整配置示例

```json
{
  "network": {
    "httpServers": [
      {
        "name": "HttpServer",
        "enable": true,
        "host": "0.0.0.0",
        "port": 3000,
        "token": "your-http-token",
        "messagePostFormat": "array"
      }
    ],
    "httpClients": [
      {
        "name": "httpClient",
        "enable": false,
        "url": "http://localhost:8080",
        "messagePostFormat": "array",
        "reportSelfMessage": false,
        "token": "",
        "debug": false
      }
    ],
    "websocketServers": [
      {
        "name": "WsServer",
        "enable": true,
        "host": "0.0.0.0",
        "port": 3001,
        "token": "your-ws-token",
        "messagePostFormat": "array",
        "reportSelfMessage": false,
        "heartInterval": 30000,
        "enableForcePushEvent": true,
        "debug": false
      }
    ],
    "websocketClients": [
      {
        "name": "WsClient",
        "enable": false,
        "url": "ws://127.0.0.1:8080/onebot/v11/ws",
        "token": "",
        "messagePostFormat": "array",
        "reportSelfMessage": false,
        "heartInterval": 30000,
        "reconnectInterval": 3000
      }
    ]
  },
  "musicSignUrl": "",
  "enableLocalFile2Url": false,
  "parseMultMsg": false
}
```

---

## 7. curl 命令示例

### 7.1 基础调用示例

#### 获取登录号信息

```bash
curl -X POST "http://localhost:3000/get_login_info" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-token"
```

#### 发送私聊消息

```bash
# 使用 Query 参数认证
curl -X POST "http://localhost:3000/send_private_msg?access_token=your-token" \
  -H "Content-Type: application/json" \
  -d '{
    "user_id": 123456789,
    "message": "Hello from NapCat!"
  }'

# 使用 Header 认证
curl -X POST "http://localhost:3000/send_private_msg" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-token" \
  -d '{
    "user_id": 123456789,
    "message": "Hello from NapCat!"
  }'
```

#### 发送群消息

```bash
curl -X POST "http://localhost:3000/send_group_msg" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-token" \
  -d '{
    "group_id": 987654321,
    "message": "Hello Group!"
  }'
```

#### 发送图片消息

```bash
curl -X POST "http://localhost:3000/send_group_msg" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-token" \
  -d '{
    "group_id": 987654321,
    "message": [
      {"type": "text", "data": {"text": "看这张图："}},
      {"type": "image", "data": {"file": "https://example.com/image.jpg"}}
    ]
  }'
```

### 7.2 群管理示例

#### 获取群列表

```bash
curl -X POST "http://localhost:3000/get_group_list" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-token"
```

#### 获取群信息

```bash
curl -X POST "http://localhost:3000/get_group_info" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-token" \
  -d '{
    "group_id": 987654321,
    "no_cache": false
  }'
```

#### 获取群成员列表

```bash
curl -X POST "http://localhost:3000/get_group_member_list" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-token" \
  -d '{
    "group_id": 987654321
  }'
```

#### 群成员禁言

```bash
curl -X POST "http://localhost:3000/set_group_ban" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-token" \
  -d '{
    "group_id": 987654321,
    "user_id": 123456789,
    "duration": 3600
  }'
```

#### 设置群管理员

```bash
curl -X POST "http://localhost:3000/set_group_admin" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-token" \
  -d '{
    "group_id": 987654321,
    "user_id": 123456789,
    "enable": true
  }'
```

### 7.3 其他常用接口

#### 撤回消息

```bash
curl -X POST "http://localhost:3000/delete_msg" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-token" \
  -d '{
    "message_id": 12345
  }'
```

#### 获取版本信息

```bash
curl -X POST "http://localhost:3000/get_version_info" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-token"
```

#### 获取好友列表

```bash
curl -X POST "http://localhost:3000/get_friend_list" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-token"
```

---

## 8. 参考资源

### 8.1 官方资源

- **GitHub 仓库**: https://github.com/NapNeko/NapCatQQ
- **官方文档**: https://napneko.github.io/
- **API 文档**: https://napneko.github.io/zh-CN/develop/api
- **安装指南**: https://napneko.github.io/guide/install
- **配置指南**: https://napneko.github.io/config/basic

### 8.2 OneBot 协议

- **OneBot 协议文档**: https://onebot.dev/
- **OneBot v11 协议**: https://onebots.pages.dev/protocol/onebot-v11/

### 8.3 相关项目

- **go-cqhttp 文档**: https://docs.go-cqhttp.org/api/
- **NoneBot2**: https://nonebot.dev/
- **Koishi**: https://koishi.chat/

### 8.4 社区支持

- **Telegram 群组**: NapCatQQ
- **QQ 交流群**: 搜索 NapCat 相关群组

---

## 附录：API 快速参考表

| API 名称 | 功能描述 | 权限要求 |
|----------|----------|----------|
| `send_private_msg` | 发送私聊消息 | 好友关系 |
| `send_group_msg` | 发送群消息 | 群成员 |
| `send_msg` | 通用发送消息 | - |
| `delete_msg` | 撤回消息 | 消息发送者/管理员 |
| `get_login_info` | 获取登录信息 | - |
| `get_friend_list` | 获取好友列表 | - |
| `get_group_list` | 获取群列表 | - |
| `get_group_info` | 获取群信息 | 群成员 |
| `get_group_member_list` | 获取群成员列表 | 群成员 |
| `get_group_member_info` | 获取群成员信息 | 群成员 |
| `set_group_kick` | 群组踢人 | 管理员/群主 |
| `set_group_ban` | 群组禁言 | 管理员/群主 |
| `set_group_admin` | 设置群管理员 | 群主 |
| `set_group_card` | 设置群名片 | 管理员/群主 |
| `set_group_name` | 设置群名 | 管理员/群主 |
| `set_group_leave` | 退出群组 | 群成员 |
| `set_group_special_title` | 设置群专属头衔 | 群主 |
| `get_version_info` | 获取版本信息 | - |
| `get_status` | 获取运行状态 | - |

---

*报告生成时间：2026-03-15*  
*报告版本：v1.0*
