diff --git a/apps/chat.js b/apps/chat.js index 9218175b..9a064180 100644 --- a/apps/chat.js +++ b/apps/chat.js @@ -1674,8 +1674,8 @@ export class chatgpt extends plugin { seq = e.source.message_id } let msgs = e.isGroup ? await e.group.getChatHistory(seq, 1) : await e.friend.getChatHistory(seq, 1) - let sourceMsg = msgs[0] - let fileMsgElem = sourceMsg.message.find(msg => msg.type === 'file') + let sourceMsg = msgs[msgs.length - 1] + let fileMsgElem = sourceMsg.file || sourceMsg.message.find(msg => msg.type === 'file') if (fileMsgElem) { toSummaryFileContent = await extractContentFromFile(fileMsgElem, e) } diff --git a/utils/chat.js b/utils/chat.js index f37d5d9f..097cee4e 100644 --- a/utils/chat.js +++ b/utils/chat.js @@ -1,4 +1,3 @@ -import common from '../../../lib/common/common.js' export async function getChatHistoryGroup (e, num) { // if (e.adapter === 'shamrock') { @@ -46,9 +45,15 @@ export async function getChatHistoryGroup (e, num) { return [] } -function pickMemberAsync (e, userId) { +async function pickMemberAsync (e, userId) { + let key = `CHATGPT:GroupMemberInfo:${e.group_id}:${userId}` + let cache = await redis.get(key) + if (cache) { + return JSON.parse(cache) + } return new Promise((resolve, reject) => { e.group.pickMember(userId, true, (sender) => { + redis.set(key, JSON.stringify(sender), { EX: 86400 }) resolve(sender) }) }) diff --git a/utils/common.js b/utils/common.js index 3c05aaf0..ab27aa57 100644 --- a/utils/common.js +++ b/utils/common.js @@ -14,6 +14,7 @@ import { translate } from './translate.js' import uploadRecord from './uploadRecord.js' import Version from './version.js' import fetch, { FormData, fileFromSync } from 'node-fetch' +import https from "https"; let pdfjsLib try { pdfjsLib = (await import('pdfjs-dist')).default @@ -1034,10 +1035,15 @@ export function getUserSpeaker (userSetting) { * @param url 要下载的文件链接 * @param destPath 目标路径,如received/abc.pdf. 目前如果文件名重复会覆盖。 * @param absolute 是否是绝对路径,默认为false,此时拼接在data/chatgpt下 + * @param ignoreCertificateError 忽略证书错误 * @returns {Promise} 最终下载文件的存储位置 */ -export async function downloadFile (url, destPath, absolute = false) { - let response = await fetch(url) +export async function downloadFile (url, destPath, absolute = false, ignoreCertificateError = true) { + let response = await fetch(url, { + agent: new https.Agent({ + rejectUnauthorized: !ignoreCertificateError + }) + }) if (!response.ok) { throw new Error(`download file http error: status: ${response.status}`) }