🐛 fix(aiCaller): improve message handling for group chat history and mentions with proper looping and name retrieval

This commit is contained in:
Jerry 2025-11-25 13:46:30 +08:00
parent f17e9ec0dc
commit 5c97c9cdf7
3 changed files with 13 additions and 10 deletions

View File

@ -98,6 +98,7 @@
- [X] 记忆存储及搜索
- [X] 自定义会话管理
- [X] 支持获取引用消息,使用seq标记
- [X] 支持群聊上下文消息
- [ ] 支持调用更多工具
- [ ] 获取引用消息
- [ ] 适配多模态模型,查看图片等

View File

@ -132,13 +132,14 @@ async function extractUserMessage(msg, nickname, e) {
return [];
}
if (at.length > 0) {
at.forEach((at) => {
if (at == e.bot.uin) {
for (const at1 of at) {
if (at1 == e.bot.uin) {
//returnMessage += `[${e.sender?.nickname},id:${e.user_id}]@(at)了你,你的id是${at}\n`;
} else {
returnMessage += `[${e.sender?.nickname},id:${e.user_id},seq:${e.message_id}]@(at)了一个人,id是${at}\n`;
const atNickname = await e.group.pickMember(at1).nickname || '一个人';
returnMessage += `[${e.sender?.nickname},id:${e.user_id},seq:${e.message_id}]@(at)了${atNickname},id是${at1}\n`;
}
}
});
}
const imgUrls = await YunzaiUtils.getImages(e, 1, true);
if (imgUrls) {

View File

@ -166,9 +166,9 @@ class AiCaller {
const groupChatHistory = await e.group.getChatHistory(e.message_id, historyLen);
if(groupChatHistory && groupChatHistory.length > 0 ){
contextIntro += '[群聊聊天记录(从旧到新)]\n'
groupChatHistory.forEach((message)=>{
for (const message of groupChatHistory) {
const msgArr = message.message;
msgArr.forEach((msg)=>{
for (const msg of msgArr) {
if(msg.type==='text'){
contextIntro += `[${message.sender.user_id == e.bot.uin ? '你' : message.sender?.nickname},id:${message.sender?.user_id},seq:${message.message_id}]之前说过:${msg.text}\n`
}
@ -176,14 +176,15 @@ class AiCaller {
if(msg.qq == e.bot.uin){
contextIntro += `[${message.sender?.nickname},id:${message.sender?.user_id},seq:${message.message_id}]之前@了你\n`
} else {
contextIntro += `[${message.sender.user_id == e.bot.uin ? '你' : message.sender?.nickname},id:${message.sender?.user_id},seq:${message.message_id}]之前@了${msg.qq}\n`
const atNickname = await e.group.pickMember(msg.qq).nickname || '一个人';
contextIntro += `[${message.sender.user_id == e.bot.uin ? '你' : message.sender?.nickname},id:${message.sender?.user_id},seq:${message.message_id}]之前@了${atNickname},id是${msg.qq}\n`
}
}
if(msg.type === 'image'){
contextIntro += `[${message.sender?.nickname},id:${message.sender?.user_id},seq:${message.message_id}]之前发送了一张图片(你可能暂时无法查看)\n`
}
})
})
}
}
}
if (memories && memories.length > 0) {