feat:添重置对话功能

This commit is contained in:
Jerry 2025-10-22 13:17:05 +08:00
parent 41bedf8e1a
commit 5aecaebfdc

View File

@ -25,6 +25,10 @@ export class crystelfAI extends plugin {
reg: `^${nickname}([\\s\\S]*)?$`, reg: `^${nickname}([\\s\\S]*)?$`,
fnc: 'in', fnc: 'in',
}, },
{
reg: '^(#|/)?重置(对话|会话)$',
fnc: 'clearChatHistory',
}
], ],
}); });
this.isInitialized = false; this.isInitialized = false;
@ -47,6 +51,14 @@ export class crystelfAI extends plugin {
async in(e){ async in(e){
return await index(e); return await index(e);
} }
async clearChatHistory(e){
let session = SessionManager.createOrGetSession(e.group_id,e.user_id,e);
if(!session) return e.reply(`当前有群友正在和${nickname}聊天噢,请等待会话结束..`,true);
SessionManager.updateChatHistory(e.group_id,[]);
SessionManager.deactivateSession(e.group_id,e.user_id);
return e.reply('成功重置聊天,聊天记录已经清除了..',true);
}
} }
Bot.on("message.group",async(e)=>{ Bot.on("message.group",async(e)=>{
@ -237,6 +249,7 @@ async function callAiForResponse(userMessage, e, aiConfig) {
} }
//搜索相关记忆 //搜索相关记忆
const memories = await MemorySystem.searchMemories(e.user_id,[userMessage], 5); const memories = await MemorySystem.searchMemories(e.user_id,[userMessage], 5);
logger.info(`[crystelf-ai] ${memories}`)
//构建聊天历史 //构建聊天历史
const historyLen = aiConfig.chatHistory; const historyLen = aiConfig.chatHistory;
const chatHistory = session.chatHistory.slice(-historyLen|-10); const chatHistory = session.chatHistory.slice(-historyLen|-10);
@ -257,7 +270,6 @@ async function callAiForResponse(userMessage, e, aiConfig) {
e.group_id, e.group_id,
e.user_id e.user_id
); );
//更新session //更新session
const newChatHistory = [ const newChatHistory = [
...chatHistory, ...chatHistory,
@ -315,7 +327,7 @@ async function sendResponse(e, messages) {
break; break;
case 'at': case 'at':
await e.reply(segment.at(message.id)); e.reply(segment.at(message.id));
break; break;
case 'poke': case 'poke':
@ -349,12 +361,11 @@ async function handleCodeMessage(e, message) {
if (imagePath) { if (imagePath) {
await e.reply(segment.image(imagePath)); await e.reply(segment.image(imagePath));
} else { } else {
// 渲染失败 TODO 构造转发消息发送,避免刷屏 await e.reply('渲染代码失败了,待会儿再试试吧..',true);
await e.reply(segment.code(message.data));
} }
} catch (error) { } catch (error) {
logger.error(`[crystelf-ai] 处理代码消息失败: ${error.message}`); logger.error(`[crystelf-ai] 处理代码消息失败: ${error.message}`);
await e.reply(segment.code(message.data)); await e.reply('渲染代码失败了,待会儿再试试吧..',true);
} }
} }
@ -366,11 +377,11 @@ async function handleMarkdownMessage(e, message) {
await e.reply(segment.image(imagePath)); await e.reply(segment.image(imagePath));
} else { } else {
//渲染失败 TODO 构造转发消息发送,避免刷屏 //渲染失败 TODO 构造转发消息发送,避免刷屏
await e.reply(message.data); await e.reply('渲染markdown失败了,待会儿再试试吧..',true);
} }
} catch (error) { } catch (error) {
logger.error(`[crystelf-ai] 处理Markdown消息失败: ${error.message}`); logger.error(`[crystelf-ai] 处理Markdown消息失败: ${error.message}`);
await e.reply(message.data); await e.reply('渲染markdown失败了,待会儿再试试吧..',true);
} }
} }