> 规范网页：https://docs.tensuu.com/功能模块详解/15_问答.html ｜ Markdown：/功能模块详解/15_问答.md ｜ 文档修订：2026.10.26

# 问答

这篇帮你做什么：维护一套“群里常问的问题 → 固定回答”的词库。群成员的消息命中问题时，机器人自动把答案发到该群。入口：**侧边栏 → 群设置 → 问答词库**。

## 适用与不适用

| 你想做的事 | 是否适合本页 | 原因 |
| --- | --- | --- |
| 成员问固定问题时回复固定答案 | 适合 | 模糊、精确或正则匹配后回复 |
| 给回答加入触发者昵称、群名、原问题等变量 | 适合 | 回答支持固定 6 个变量 |
| 消息命中关键词后警告、禁言或踢人 | 不适合 | 用[监控方案](03_监控方案.md)/[群聊监控](08_群聊监控.md) |
| 修改“帮助”等指令的回复 | 不适合 | 用[提示设置](23_提示设置.md) |
| 定时主动发消息 | 不适合 | 用[定时任务](12_定时任务.md) |
| 给任意问题接 AI 自由回答 | 不适合 | 问答只返回你维护的固定答案 |

## 作用范围与工作方式

- 词库按群独立：顶部选好群后，新增、编辑、导入都属于该群。页面没有控制台登录账号或角色概念，选群即代表要改该群词库。
- 匹配时先看**当前群**已发布的问答，再看**全局问答层**。当前群问答按“排序号从大到小、同排序号后创建的优先”检查；当前群的问答全部检查完后，才检查全局层。
- 一条消息最多得到**一条**问答回复：在问答内部，第一条命中的问答即停止；在整条消息路由中，问答规则是低优先级（优先级固定为 0），如果消息先被指令或默认优先级更高的监控规则受理，问答不会再回复。反过来，问答先受理时，同一条消息的转发等后续规则通常也不会再执行（同一转发规则的多个目标属于一次扇出）。
- 只有状态为 **启用**（列表显示为 published）的问答参与匹配；禁用或删除即停止。
- 正则写错时该条问答在匹配阶段被**静默跳过**，不会报错，也不会让整条词库失效。

### 全局问答层怎么维护

系统数据中存在 `group_id = 0` 的全局问答，会对所有群生效；用 **测试匹配** 时，结果里的“作用域”会标明命中来自“当前群”还是“全局 FAQ”。

**当前控制台没有独立的全局问答维护入口**：页面列表、新增、编辑和导入都只写当前群。你不能在页面里选择“全局”作为归属，导入文件里的 `GroupID` 列也会被忽略。本手册未提供已核实的全局层写入步骤，**不要据此猜 API 或直接改在线数据库**。需要全局维护时应先确认当前部署支持的操作及全部受影响群；不要把一条本群问答当成全局，也不要为了“让所有群都能用”把多个群逐个复制后误以为已经统一。

## 新增一条问答

1. 点右上角 **新增问答**。
2. 填写：
   - **问题**（必填，1–200 字）：选“正则匹配”时这里填正则表达式。
   - **匹配模式**（三选一，默认模糊匹配）：
     - **模糊匹配**：群消息 **包含** 问题原文即命中（不区分大小写）。
     - **精确匹配**：整条消息与问题完全相同才命中（不区分大小写）。
     - **正则匹配**：按正则表达式匹配消息；**写错的正则会被跳过、不报错**，该条等于不生效。
   - **排序**：数字越大越靠前。它只在当前群词库内部比较；同排序号时后创建的优先。全局问答总在当前群问答之后检查，不能靠排序号排到当前群问答前面。
   - **回答**（必填）：命中后发出的内容，支持变量替换（见下方“可用变量”），点 **测试渲染** 可预览替换效果，不会真发。
   - **分类**（可选）：便于筛选管理，可直接输入新分类名创建。
   - **状态**：默认启用；关闭后该条不参与匹配。
3. 点 **确定** 保存。
4. **怎样确认成功**：列表出现该条，状态为启用；刷新后内容、匹配模式和排序保持不变。

## 设置项参考

| 字段 | 含义与取值 | 默认 | 作用与限制 |
| --- | --- | --- | --- |
| 问题 | 问题文本或正则表达式 | 无 | 1–200 字；正则模式填表达式 |
| 匹配模式 | 模糊 / 精确 / 正则 | 模糊 | 正则非法时该条被静默跳过 |
| 排序 | 整数，越大越优先 | 0 | 只在当前群内部排序 |
| 回答 | 命中后发送的文本 | 无 | 支持 6 个模板变量 |
| 分类 | 分类名称 | 未分类 | 便于筛选；可按名称自动创建 |
| 状态 | 启用（published）/ 禁用（draft） | 启用 | 只有启用项参与匹配 |

## 回答可用变量

| 变量 | 含义 |
| --- | --- |
| `{{.user_id}}` | 触发问答的成员 ID |
| `{{.nickname}}` | 触发问答的成员昵称 |
| `{{.group_id}}` | 群号 |
| `{{.group_name}}` | 群名 |
| `{{.time}}` | 回复时刻 |
| `{{.question}}` | 触发命中的那条消息原文 |

模板语法写错（如括号未闭合）时，该次回复不发送，“渲染失败”计数加一；变量名不存在时通常渲染为空字符串。完整差异见[变量使用指南](../高级功能/变量使用指南.md#问答)。

## 先测试，再上线

- 点顶部 **测试匹配**，输入一条模拟的群消息，页面会显示 **会命中哪一条** 已启用的问答（含作用域、匹配方式、将回复的答案），**不实际发送**。
- 测试匹配按与运行时相同的当前群 → 全局层顺序，以及相同的排序/创建时间顺序进行，是排查“为什么总命中那条”的最快方法。
- 但它只验证问答层：不能证明整条消息一定会进入问答，也不能验证群级开关、机器人状态和发送结果。

正例：先写“怎么进群”的模糊问答，用测试匹配输入“请问怎么进群呀”，确认命中当前群条目和回答，再在测试群实际问一次。反例：只把排序号调到很大，就认为能压过管理指令或监控规则——问答的固定优先级低于这些阶段。

## 统计列怎么看

列表中的 **命中 / 受理 / 发送确认 / 渲染失败** 是这条问答的累计计数：

- **命中**：被匹配到的次数。
- **受理**：命中且回答渲染成功后进入回复处理的次数，不代表已经发送。
- **发送确认**：发送环节获得成功确认的次数，不代表每位成员已经看到或阅读。
- **渲染失败**：因为回答里的变量写法有误导致这次没有回复的次数。**渲染失败大于 0 说明回答模板有问题**，改正变量语法即可。

命中数高但受理数低，通常说明大量命中没有进入回复；受理数高但发送确认低，要继续查机器人和群发送链路。计数是累计值，不按时间筛选。

## 导入与导出

- 顶部 **导入 / 导出** 接受 CSV 文件；导入对话框提供模板下载。列固定为：

  ```text
  Question,Answer,MatchMode,CategoryName,Status,Sort,UsageCount,GroupID
  ```

  CSV 使用 UTF-8 带 BOM，Excel 打开中文不乱码。`UsageCount` 和 `GroupID` 只用于导出展示，导入时忽略：统计由系统维护，归属取当前选中的群。

- 分类按名称解析，不存在时自动创建；匹配模式默认模糊、状态默认 published、排序默认 0。
- 导入按 **整批校验、整批写入** 处理：只要有一行有问题（如缺问题或回答、回答模板写法非法），整批都不会导入，错误按 `Row N` 报告，修正后重试。
- 页面可能仍提示“导入成功”但导入条数为 0（例如只有表头的空文件）。请刷新核对列表实际条数，修正文件中的问题行后再导入，不要只凭成功提示判断。
- 导入不会覆盖当前群原有问答，而是追加新条目；迁移或批量修改前先导出留底，并确认目标群选对。

## 没成功先检查什么

- 该回复没回复：问答是否启用 → 匹配模式选对没有（模糊匹配要求消息里 **包含** 问题原文）→ 用 **测试匹配** 验证这条消息到底命中了谁——很可能被 **排序更靠前的另一条** 或**全局问答**抢先命中了。
- 命中了但在群里仍未回复：消息是否已被指令或监控规则先受理；看 **渲染失败** 计数是否在涨；机器人是否在线且在该群。
- 正则写错了没反应：正则匹配下非法正则会被静默跳过；先用 **测试匹配** 只验证问答层，再结合[结果判断与排障](../核心概念/结果判断与排障.md#排查顺序)检查整条消息链。
- 以为改了全局：确认当前选中的群；控制台没有全局问答入口，本页操作不会写全局层。

## 关闭或改回

- 单条停用：行内开关或 **操作 → 禁用**；不再需要就 **删除**。
- 停止本群词库：把本群条目逐条禁用；没有单独的“问答总开关”。全局问答属于另一层，仅禁用本群条目不保证所有问答回复停止。
- 删除或禁用只影响后续匹配，已经发出的回答不能撤回。

## 和其他页面的关系

- 回答中的变量写法与各功能可用变量见[变量使用指南](../高级功能/变量使用指南.md)。
- 需要按关键词执行处罚（而不是回复）的场景属于监控方案，见[群聊监控](08_群聊监控.md)。
- 为什么一条消息只触发部分功能，见[群管家怎样工作](../核心概念/工作方式与作用范围.md#消息处理)。
- 问答计数与结果层次的对应关系见[结果判断与排障](../核心概念/结果判断与排障.md#结果入口)。
- 警告、信用分和升级处罚不在这里配置，见[群基本设置](群基本设置.md#告警与信用分)。
