nonebot-plugin-llmchat/PRIVATE_CHAT_CHANGES.md
KawakazeNotFound 2fecb746b3 触发检查
2025-11-06 11:20:33 +08:00

174 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 私聊功能实现总结
## 📝 概览
已成功为 nonebot-plugin-llmchat 项目添加了完整的私聊功能支持。用户现在可以在私聊中与机器人进行对话,同时保持群聊功能完全不变。
---
## 🔧 主要改动
### 1. **config.py** - 配置模块
#### 新增配置项:
- `LLMCHAT__ENABLE_PRIVATE_CHAT` (bool, 默认值: False)
- 是否启用私聊功能
- `LLMCHAT__PRIVATE_CHAT_PRESET` (str, 默认值: "off")
- 私聊默认使用的预设名称
### 2. **__init__.py** - 主程序模块
#### 新增导入:
```python
from typing import Union
from nonebot.adapters.onebot.v11 import PrivateMessageEvent
```
#### 新增数据结构:
**PrivateChatState 类**
- 用于管理每个用户的私聊状态
- 结构与 GroupState 类似,但针对单个用户独立管理
- 包含preset_name、history、queue、processing 等属性
**private_chat_states 字典**
- 类型:`dict[int, PrivateChatState]`
- 按用户ID存储私聊状态
#### 修改的函数:
1. **format_message()**
- 参数改为:`event: Union[GroupMessageEvent, PrivateMessageEvent]`
- 支持两种消息事件类型的格式化
2. **is_triggered()**
- 参数改为:`event: Union[GroupMessageEvent, PrivateMessageEvent]`
- 新增私聊事件检测逻辑
- 私聊消息在启用且预设不为"off"时自动触发
3. **get_preset()**
- 新增参数:`is_group: bool = True`
- 支持从群组或私聊状态获取预设配置
4. **process_messages()**
- 新增参数:`context_id: int, is_group: bool = True`
- 支持处理群组和私聊消息
- 私聊时跳过OneBot群操作工具ob__开头的工具
5. **handle_message()**
- 参数改为:`event: Union[GroupMessageEvent, PrivateMessageEvent]`
- 支持路由到不同的处理逻辑
6. **save_state()** / **load_state()**
- 新增私聊状态的持久化
- 私聊状态保存到单独的文件:`llmchat_private_state.json`
#### 新增命令处理器(私聊相关):
所有私聊命令需要主人权限,且仅在启用私聊功能时可用:
1. **私聊API预设**
- 查看或修改私聊使用的API预设
- 用法:`私聊API预设 [预设名]`
2. **私聊修改设定**
- 修改私聊机器人的性格设定
- 用法:`私聊修改设定 [新设定]`
3. **私聊记忆清除**
- 清除私聊的对话历史记录
- 用法:`私聊记忆清除`
4. **私聊切换思维输出**
- 切换是否输出AI的思维过程
- 用法:`私聊切换思维输出`
### 3. **README.md** - 文档更新
#### 更新的章节:
1. **项目介绍**
- 更新标题为"群聊&私聊的AI对话插件"
- 添加"群聊和私聊支持"功能说明
2. **配置表格**
- 添加两个新配置项的说明
3. **使用指南**
- 将原"指令表"改名为"群聊指令表"
- 新增"私聊指令表"
- 添加"私聊功能启用示例"部分
---
## 🚀 使用指南
### 启用私聊功能
`.env` 文件中添加:
```bash
# 启用私聊功能
LLMCHAT__ENABLE_PRIVATE_CHAT=true
# 设置私聊默认预设
LLMCHAT__PRIVATE_CHAT_PRESET="deepseek-v1"
```
### 私聊命令示例
```
# 主人私聊机器人
私聊API预设 # 查看当前预设
私聊API预设 aliyun-deepseek-v3 # 切换预设
私聊修改设定 你是一个有趣的AI # 修改性格设定
私聊记忆清除 # 清除对话记忆
私聊切换思维输出 # 开关思维过程输出
```
---
## 🔑 关键特性
**独立管理** - 群聊和私聊拥有完全独立的对话记忆和配置
**灵活控制** - 可单独启用/禁用私聊功能,无需影响群聊
**自动触发** - 私聊消息自动触发回复,无需@机器人
**权限隔离** - 私聊命令仅主人可用
**工具适配** - 私聊时自动跳过不适用的群操作工具
**状态持久化** - 私聊状态独立保存和恢复
---
## 📊 文件对比
| 文件 | 变更类型 | 主要改动 |
|------|--------|--------|
| config.py | 修改 | 新增2个配置项 |
| __init__.py | 修改 | 新增私聊类、处理器、命令 |
| README.md | 修改 | 更新文档说明 |
---
## ⚠️ 注意事项
1. **默认禁用** - 私聊功能默认为禁用状态,需要在配置文件中显式启用
2. **群操作工具** - OneBot群操作工具禁言、撤回等在私聊中不可用
3. **状态文件** - 私聊状态存储在 `llmchat_private_state.json` 文件中
4. **权限限制** - 所有私聊命令都需要主人权限
5. **独立预设** - 私聊和群聊可以使用不同的API预设