From 2114095515e26fa80721bca0fa8f4bf7bac404ec Mon Sep 17 00:00:00 2001 From: gaoao-3 <140887777+gaoao-3@users.noreply.github.com> Date: Mon, 30 Dec 2024 22:59:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0bym=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=9B=B4=E5=A4=9A=E7=BE=A4=E8=81=8A=E4=B8=8A=E4=B8=8B?= =?UTF-8?q?=E6=96=87=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/bym.js | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/apps/bym.js b/apps/bym.js index fc2f39f..906ca2a 100644 --- a/apps/bym.js +++ b/apps/bym.js @@ -17,6 +17,26 @@ import { JinyanTool } from '../utils/tools/JinyanTool.js' import { KickOutTool } from '../utils/tools/KickOutTool.js' import { SetTitleTool } from '../utils/tools/SetTitleTool.js' + +// 角色映射表 +const roleMap = { + owner: '群主', + admin: '管理员', + member: '成员' +} + +// 格式化日期时间 +const formatDate = (date) => { + const year = date.getFullYear() + const month = (date.getMonth() + 1).toString().padStart(2, '0') + const day = date.getDate().toString().padStart(2, '0') + const hours = date.getHours().toString().padStart(2, '0') + const minutes = date.getMinutes().toString().padStart(2, '0') + const seconds = date.getSeconds().toString().padStart(2, '0') + + return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}` +} + export class bym extends plugin { constructor () { super({ @@ -84,15 +104,16 @@ export class bym extends plugin { if (prop < Config.bymRate) { logger.info('random chat hit') let chats = await getChatHistoryGroup(e, 20) - opt.system = `你的名字是“${Config.assistantLabel}”,你在一个qq群里,群号是${group},当前和你说话的人群名片是${card}, qq号是${sender}, 请你结合用户的发言和聊天记录作出回应,要求表现得随性一点,最好参与讨论,混入其中。不要过分插科打诨,不知道说什么可以复读群友的话。要求你做搜索、发图、发视频和音乐等操作时要使用工具。不可以直接发[图片]这样蒙混过关。要求优先使用中文进行对话。` + + opt.system = `你的名字是“${Config.assistantLabel}”,你在一个qq群里,群号是${group},当前和你说话的人群名片是${card}, qq号是${sender}, 请你结合用户的发言和聊天记录作出回应,要求表现得随性一点,最好参与讨论,混入其中。与你相关的话题时,你可以去回应一下,不相关你就随便应付就行了,不要过分插科打诨,不知道说什么可以复读群友的话。当群友要求你做搜索、发图、发视频和音乐等操作时要使用工具,不可以直接发文字来蒙混过关,你必须根据需要来调用各种工具,并回复相关问题。要求优先使用中文进行对话。` + candidate + - '以下是聊天记录:' + chats - .map(chat => { - let sender = chat.sender || chat || {} - return `${sender.card || sender.nickname} :${chat.raw_message}` - }) + 以下是聊天记录: +` + chats + .map(chat => { + const sender = chat.sender || chat || {} + return `【${sender.card || sender.nickname}】(qq:${sender.user_id}, ${roleMap[sender.role] || '未知角色'}, 群头衔:${sender.title || '无'}, 时间:${formatDate(new Date(chat.time * 1000))}, messageId: ${chat.message_id}) 说:${chat.raw_message}` + }) .join('\n') + - `\n你的回复应该尽可能简练,像人类一样随意,不要附加任何奇怪的东西,如聊天记录的格式(比如${Config.assistantLabel}:),禁止重复聊天记录。` + `\n你的回复应该尽可能简练,像人类一样随意,但是也要保留“${Config.assistantLabel}”的角色风格,不要附加任何奇怪的东西,不能模仿聊天记录的格式,要以第一人称视角对话,禁止重复聊天记录。` let client = new CustomGoogleGeminiClient({ e,