mirror of
https://github.com/FuQuan233/nonebot-plugin-llmchat.git
synced 2026-02-05 03:28:05 +00:00
4.8 KiB
4.8 KiB
私聊功能实现总结
📝 概览
已成功为 nonebot-plugin-llmchat 项目添加了完整的私聊功能支持。用户现在可以在私聊中与机器人进行对话,同时保持群聊功能完全不变。
🔧 主要改动
1. config.py - 配置模块
新增配置项:
-
LLMCHAT__ENABLE_PRIVATE_CHAT(bool, 默认值: False)- 是否启用私聊功能
-
LLMCHAT__PRIVATE_CHAT_PRESET(str, 默认值: "off")- 私聊默认使用的预设名称
2. init.py - 主程序模块
新增导入:
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存储私聊状态
修改的函数:
-
format_message()
- 参数改为:
event: Union[GroupMessageEvent, PrivateMessageEvent] - 支持两种消息事件类型的格式化
- 参数改为:
-
is_triggered()
- 参数改为:
event: Union[GroupMessageEvent, PrivateMessageEvent] - 新增私聊事件检测逻辑
- 私聊消息在启用且预设不为"off"时自动触发
- 参数改为:
-
get_preset()
- 新增参数:
is_group: bool = True - 支持从群组或私聊状态获取预设配置
- 新增参数:
-
process_messages()
- 新增参数:
context_id: int, is_group: bool = True - 支持处理群组和私聊消息
- 私聊时跳过OneBot群操作工具(ob__开头的工具)
- 新增参数:
-
handle_message()
- 参数改为:
event: Union[GroupMessageEvent, PrivateMessageEvent] - 支持路由到不同的处理逻辑
- 参数改为:
-
save_state() / load_state()
- 新增私聊状态的持久化
- 私聊状态保存到单独的文件:
llmchat_private_state.json
新增命令处理器(私聊相关):
所有私聊命令需要主人权限,且仅在启用私聊功能时可用:
-
私聊API预设
- 查看或修改私聊使用的API预设
- 用法:
私聊API预设 [预设名]
-
私聊修改设定
- 修改私聊机器人的性格设定
- 用法:
私聊修改设定 [新设定]
-
私聊记忆清除
- 清除私聊的对话历史记录
- 用法:
私聊记忆清除
-
私聊切换思维输出
- 切换是否输出AI的思维过程
- 用法:
私聊切换思维输出
3. README.md - 文档更新
更新的章节:
-
项目介绍
- 更新标题为"群聊&私聊的AI对话插件"
- 添加"群聊和私聊支持"功能说明
-
配置表格
- 添加两个新配置项的说明
-
使用指南
- 将原"指令表"改名为"群聊指令表"
- 新增"私聊指令表"
- 添加"私聊功能启用示例"部分
🚀 使用指南
启用私聊功能
在 .env 文件中添加:
# 启用私聊功能
LLMCHAT__ENABLE_PRIVATE_CHAT=true
# 设置私聊默认预设
LLMCHAT__PRIVATE_CHAT_PRESET="deepseek-v1"
私聊命令示例
# 主人私聊机器人
私聊API预设 # 查看当前预设
私聊API预设 aliyun-deepseek-v3 # 切换预设
私聊修改设定 你是一个有趣的AI # 修改性格设定
私聊记忆清除 # 清除对话记忆
私聊切换思维输出 # 开关思维过程输出
🔑 关键特性
✅ 独立管理 - 群聊和私聊拥有完全独立的对话记忆和配置
✅ 灵活控制 - 可单独启用/禁用私聊功能,无需影响群聊
✅ 自动触发 - 私聊消息自动触发回复,无需@机器人
✅ 权限隔离 - 私聊命令仅主人可用
✅ 工具适配 - 私聊时自动跳过不适用的群操作工具
✅ 状态持久化 - 私聊状态独立保存和恢复
📊 文件对比
| 文件 | 变更类型 | 主要改动 |
|---|---|---|
| config.py | 修改 | 新增2个配置项 |
| init.py | 修改 | 新增私聊类、处理器、命令 |
| README.md | 修改 | 更新文档说明 |
⚠️ 注意事项
-
默认禁用 - 私聊功能默认为禁用状态,需要在配置文件中显式启用
-
群操作工具 - OneBot群操作工具(禁言、撤回等)在私聊中不可用
-
状态文件 - 私聊状态存储在
llmchat_private_state.json文件中 -
权限限制 - 所有私聊命令都需要主人权限
-
独立预设 - 私聊和群聊可以使用不同的API预设
✨ 后续改进建议
- 支持多用户私聊会话管理面板
- 添加私聊消息转发到管理员功能
- 实现私聊速率限制
- 添加私聊用户黑名单
- 支持私聊消息加密存储