From 88360ecc428c56fd039d1520782aa98c5e87630c Mon Sep 17 00:00:00 2001 From: ikechan8370 Date: Fri, 14 Feb 2025 00:14:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=B8=8A=E4=B8=8B?= =?UTF-8?q?=E6=96=87=E8=81=8A=E5=A4=A9=E5=A4=A7=E4=BA=8E20=E6=97=B6?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E9=A1=BA=E5=BA=8F=E9=94=99=E8=AF=AF=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/bym.js | 7 ++++--- model/core.js | 2 +- utils/chat.js | 8 ++++---- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/apps/bym.js b/apps/bym.js index bbe0bd71..c066b056 100644 --- a/apps/bym.js +++ b/apps/bym.js @@ -2,7 +2,8 @@ import { Config } from '../utils/config.js' import { getChatHistoryGroup } from '../utils/chat.js' import { convertFaces } from '../utils/face.js' import { customSplitRegex, filterResponseChunk } from '../utils/text.js' -import core from '../model/core.js' +import core, {roleMap} from '../model/core.js' +import {formatDate} from '../utils/common.js' export class bym extends plugin { constructor () { @@ -54,13 +55,13 @@ export class bym extends plugin { } if (prop < Config.bymRate) { logger.info('random chat hit') - let chats = await getChatHistoryGroup(e, 20) + let chats = await getChatHistoryGroup(e, Config.groupContextLength) let system = `你的名字是“${Config.assistantLabel}”,你在一个qq群里,群号是${group},当前和你说话的人群名片是${card}, qq号是${sender}, 请你结合用户的发言和聊天记录作出回应,要求表现得随性一点,最好参与讨论,混入其中。不要过分插科打诨,不知道说什么可以复读群友的话。要求你做搜索、发图、发视频和音乐等操作时要使用工具。不可以直接发[图片]这样蒙混过关。要求优先使用中文进行对话。如果此时不需要自己说话,可以只回复` + candidate + '以下是聊天记录:' + chats .map(chat => { let sender = chat.sender || chat || {} - return `${sender.card || sender.nickname}(${sender.user_id}) :${chat.raw_message}` + return `【${sender.card || sender.nickname}】(qq:${sender.user_id}, ${roleMap[sender.role] || 'normal user'},${sender.area ? 'from ' + sender.area + ', ' : ''} ${sender.age} years old, 群头衔:${sender.title}, gender: ${sender.sex}, time:${formatDate(new Date(chat.time * 1000))} 说:${chat.raw_message}` }) .join('\n') + `\n你的回复应该尽可能简练,像人类一样随意,不要附加任何奇怪的东西,如聊天记录的格式(比如${Config.assistantLabel}:),禁止重复聊天记录。` diff --git a/model/core.js b/model/core.js index 2d906f10..e8af1a45 100644 --- a/model/core.js +++ b/model/core.js @@ -55,7 +55,7 @@ import { BingAIClient } from '../client/CopilotAIClient.js' import Keyv from 'keyv' import crypto from 'crypto' -const roleMap = { +export const roleMap = { owner: 'group owner', admin: 'group administrator' } diff --git a/utils/chat.js b/utils/chat.js index 28a2187c..1d860388 100644 --- a/utils/chat.js +++ b/utils/chat.js @@ -16,13 +16,13 @@ export async function getChatHistoryGroup (e, num) { if (!chatHistory || chatHistory.length === 0) { break } - chats.push(...chatHistory) - if (seq === chatHistory[0].seq || seq === chatHistory[0].message_id) { + chats.push(...chatHistory.reverse()) + if (seq === chatHistory[chatHistory.length - 1].seq || seq === chatHistory[chatHistory.length - 1].message_id) { break } - seq = chatHistory[0].seq || chatHistory[0].message_id + seq = chatHistory[chatHistory.length - 1].seq || chatHistory[chatHistory.length - 1].message_id } - chats = chats.slice(0, num) + chats = chats.slice(0, num).reverse() try { let mm = await e.bot.gml for (const chat of chats) {