From e61d4ff3fa406591b0487e436691e15f7ea008a8 Mon Sep 17 00:00:00 2001 From: ikechan8370 Date: Mon, 11 Dec 2023 00:46:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=92=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E7=BE=A4=E8=81=8A=E6=96=87=E4=BB=B6=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/chat.js | 4 ++-- utils/chat.js | 9 +++++++-- utils/common.js | 10 ++++++++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/apps/chat.js b/apps/chat.js index 9218175..9a06418 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 f37d5d9..097cee4 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 3c05aaf..ab27aa5 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}`) }