✨ feat(command): 添加监听范围过滤和回复 @控制
- 新增 COMMAND_SCOPE 配置,支持 all/group/private 过滤消息来源 - 新增 COMMAND_ALLOWED_GROUPS 群号白名单,逗号分隔,留空不限制 - 新增 COMMAND_ALLOWED_USERS QQ 号白名单,逗号分隔,留空不限制 - 新增 COMMAND_AT_SENDER 配置,控制回复时是否 @发送者(默认 true) - 回调响应中 at_sender 字段可覆盖全局配置 - 更新 .env.example 和 README.md 文档
This commit is contained in:
33
README.md
33
README.md
@@ -42,7 +42,13 @@ uv run python -m ncatbot
|
||||
| `QQ_API_TIMEOUT` | 否 | `10` | QQ API 超时秒数 |
|
||||
| `QQ_API_MAX_RETRIES` | 否 | `2` | QQ API 失败重试次数 |
|
||||
| `COMMAND_PREFIX` | 否 | `#` | 命令前缀 |
|
||||
| `COMMAND_LENGTH` | 否 | `4` | 命令名字符数(中文字数) |
|
||||
| `COMMAND_LENGTH_MIN` | 否 | `2` | 命令名最小字符数 |
|
||||
| `COMMAND_LENGTH_MAX` | 否 | `4` | 命令名最大字符数 |
|
||||
| `COMMAND_SCOPE` | 否 | `all` | 监听范围:`all`(群+私)、`group`(仅群)、`private`(仅私) |
|
||||
| `COMMAND_ALLOWED_GROUPS` | 否 | 空(不限) | 允许的群号,逗号分隔,如 `123456,789012` |
|
||||
| `COMMAND_ALLOWED_USERS` | 否 | 空(不限) | 允许的 QQ 号,逗号分隔,如 `111111,222222` |
|
||||
| `COMMAND_AT_SENDER` | 否 | `true` | 回复时是否 @发送者 |
|
||||
| `COMMAND_CALLBACK_TIMEOUT` | 否 | `180` | 回调超时秒数 |
|
||||
| `COMMAND_CALLBACK_URL` | 否 | 空(不监听) | 命令匹配后的回调 URL |
|
||||
|
||||
## 接口说明
|
||||
@@ -187,22 +193,34 @@ curl -X POST http://localhost:8081/webhook \
|
||||
|
||||
### 命令监听
|
||||
|
||||
插件会自动监听 QQ 消息,当消息以 `#四个中文字+空格` 开头时,将命令内容 POST 到 `COMMAND_CALLBACK_URL`。
|
||||
插件会自动监听 QQ 消息,当消息以 `#命令名` 开头时,将命令内容 POST 到 `COMMAND_CALLBACK_URL`。
|
||||
|
||||
**匹配规则:**
|
||||
|
||||
```
|
||||
#测试命令 你好世界
|
||||
│ │ │ │
|
||||
│ │ │ └── 命令内容(content)
|
||||
│ └── 空格分隔
|
||||
└── 命令名(4个中文字)
|
||||
│ │ │ └── 命令内容(content,可选)
|
||||
│ └── 空格分隔(可选)
|
||||
└── 命令名(2~4个字符)
|
||||
└── 前缀(默认 #)
|
||||
```
|
||||
|
||||
- 前缀、命令名长度可通过 `COMMAND_PREFIX`、`COMMAND_LENGTH` 配置
|
||||
- 命令名支持中文、数字、字母等任意非空白字符,每个字符计 1
|
||||
- 前缀通过 `COMMAND_PREFIX` 配置,长度范围通过 `COMMAND_LENGTH_MIN` / `COMMAND_LENGTH_MAX` 配置
|
||||
- `#测试命令`、`#1a`、`#abc` 均可触发
|
||||
- 不配置 `COMMAND_CALLBACK_URL` 则不监听
|
||||
|
||||
**监听范围过滤:**
|
||||
|
||||
- `COMMAND_SCOPE`:控制监听范围
|
||||
- `all`(默认):群聊 + 私聊都监听
|
||||
- `group`:仅监听群聊
|
||||
- `private`:仅监听私聊
|
||||
- `COMMAND_ALLOWED_GROUPS`:群号白名单,逗号分隔,留空不限制
|
||||
- `COMMAND_ALLOWED_USERS`:QQ 号白名单,逗号分隔,留空不限制
|
||||
- 三个条件同时生效,必须全部满足才触发回调
|
||||
|
||||
**回调请求体(POST JSON):**
|
||||
|
||||
```json
|
||||
@@ -218,7 +236,7 @@ curl -X POST http://localhost:8081/webhook \
|
||||
|
||||
| 字段 | 说明 |
|
||||
|---|---|
|
||||
| `command` | 命令名(4个中文字) |
|
||||
| `command` | 命令名(2~4个字符) |
|
||||
| `content` | 命令后的内容 |
|
||||
| `raw_message` | 原始消息文本 |
|
||||
| `user_id` | 发送者 QQ 号 |
|
||||
@@ -249,6 +267,7 @@ curl -X POST http://localhost:8081/webhook \
|
||||
|---|---|
|
||||
| `reply` | 纯文本回复(与 `messages` 二选一,`messages` 优先) |
|
||||
| `messages` | 批量回复数组,格式同 `/webhook` 的 `messages` 字段 |
|
||||
| `at_sender` | 是否 @发送者(默认取 `COMMAND_AT_SENDER` 配置,仅群聊生效) |
|
||||
| `group_id` | 可选,覆盖回复目标群号(默认回复到原群) |
|
||||
| `user_id` | 可选,覆盖回复目标 QQ 号(默认回复到原发送者) |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user