Skip to content

Commit

Permalink
fix: 修复和优化群聊文件读取逻辑
Browse files Browse the repository at this point in the history
  • Loading branch information
ikechan8370 committed Dec 10, 2023
1 parent d254163 commit e61d4ff
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 6 deletions.
4 changes: 2 additions & 2 deletions apps/chat.js
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand Down
9 changes: 7 additions & 2 deletions utils/chat.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import common from '../../../lib/common/common.js'

export async function getChatHistoryGroup (e, num) {
// if (e.adapter === 'shamrock') {
Expand Down Expand Up @@ -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)
})
})
Expand Down
10 changes: 8 additions & 2 deletions utils/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -1034,10 +1035,15 @@ export function getUserSpeaker (userSetting) {
* @param url 要下载的文件链接
* @param destPath 目标路径,如received/abc.pdf. 目前如果文件名重复会覆盖。
* @param absolute 是否是绝对路径,默认为false,此时拼接在data/chatgpt下
* @param ignoreCertificateError 忽略证书错误
* @returns {Promise<string>} 最终下载文件的存储位置
*/
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}`)
}
Expand Down

0 comments on commit e61d4ff

Please sign in to comment.