fix: 某些特殊情况群聊记录

This commit is contained in:
ikechan8370 2023-10-14 01:11:53 +08:00
parent 4066f17847
commit 0a3c95d305

View file

@ -1588,7 +1588,6 @@ export class chatgpt extends plugin {
// opt.messageType = allThrottled ? 'Chat' : 'SearchQuery' // opt.messageType = allThrottled ? 'Chat' : 'SearchQuery'
if (Config.enableGroupContext && e.isGroup && typeof e.group.getMemberMap === 'function') { if (Config.enableGroupContext && e.isGroup && typeof e.group.getMemberMap === 'function') {
try { try {
let memberMap = await e.group.getMemberMap()
opt.groupId = e.group_id opt.groupId = e.group_id
opt.qq = e.sender.user_id opt.qq = e.sender.user_id
opt.nickname = e.sender.card opt.nickname = e.sender.card
@ -1601,23 +1600,28 @@ export class chatgpt extends plugin {
if (master && !e.group) { if (master && !e.group) {
opt.masterName = Bot.getFriendList().get(parseInt(master))?.nickname opt.masterName = Bot.getFriendList().get(parseInt(master))?.nickname
} }
let latestChat = await e.group.getChatHistory(0, 1) let latestChats = await e.group.getChatHistory(0, 1)
let seq = latestChat[0].seq if (latestChats.length > 0) {
let chats = [] let latestChat = latestChats[0]
while (chats.length < Config.groupContextLength) { if (latestChat) {
let chatHistory = await e.group.getChatHistory(seq, 20) let seq = latestChat.seq
chats.push(...chatHistory) let chats = []
} while (chats.length < Config.groupContextLength) {
chats = chats.slice(0, Config.groupContextLength) let chatHistory = await e.group.getChatHistory(seq, 20)
let mm = await e.group.getMemberMap() chats.push(...chatHistory)
chats.forEach(chat => { }
let sender = mm.get(chat.sender.user_id) chats = chats.slice(0, Config.groupContextLength)
if (sender) { let mm = await e.group.getMemberMap()
chat.sender = sender chats.forEach(chat => {
let sender = mm.get(chat.sender.user_id)
if (sender) {
chat.sender = sender
}
})
// console.log(chats)
opt.chats = chats
} }
}) }
// console.log(chats)
opt.chats = chats
} catch (err) { } catch (err) {
logger.warn('获取群聊聊天记录失败,本次对话不携带聊天记录', err) logger.warn('获取群聊聊天记录失败,本次对话不携带聊天记录', err)
} }