diff --git a/apps/bym.js b/apps/bym.js index 5b9e868..9729f56 100644 --- a/apps/bym.js +++ b/apps/bym.js @@ -56,6 +56,27 @@ export class bym extends plugin { }) } + /** + * 获取特殊身份用户的提示信息 + * @param {number} sender - 发送者的 QQ 号码 + * @returns {string} - 特殊身份用户的提示信息 + */ + getSpecialUserNotice(sender) { + // 获取特殊身份用户的 QQ 号码列表 + const specialUserQQs = Config.specialUserQQs; + // 获取特殊身份用户的名称列表 + const specialUserNames = Config.specialUserNames; + + // 查找当前发送者是否在特殊身份用户列表中 + const index = specialUserQQs.indexOf(String(sender)); + if (index !== -1) { + // 如果找到了,获取对应的名称 + const name = specialUserNames[index]; + return `,其中 QQ 号码为 ${sender} 的用户是 ${name},他是你的主人,你要重视他的发言。`; + } + return ''; + } + /** 复读 */ async bym (e) { if (!Config.enableBYM) { @@ -104,13 +125,18 @@ 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}, 请你结合用户的发言和聊天记录作出回应,要求表现得随性一点,最好参与讨论,混入其中。与你相关的话题时,你可以去回应一下,不相关你就随便应付就行了,不要过分插科打诨,不知道说什么可以复读群友的话。当群友要求你做搜索、发图、发视频和音乐等操作时要使用工具,不可以直接发文字来蒙混过关,你必须根据需要来调用各种工具,并回复相关问题。要求优先使用中文进行对话。` + + + // 调用 getSpecialUserNotice 方法获取提示信息 + let specialUserNotice = this.getSpecialUserNotice(sender); + + // 使用 specialUserNotice 更新提示词 + opt.system = `你的名字是“${Config.assistantLabel}”,你在一个qq群里,群号是${group},当前和你说话的人群名片是${card}, qq号是${sender}${specialUserNotice}, 请你结合用户的发言和聊天记录作出回应,要求表现得随性一点,最好参与讨论,混入其中。${specialUserNotice ? '你要重视他的发言。' : ''}与你相关的话题时,你可以去回应一下,不相关你就随便应付就行了,不要过分插科打诨,不知道说什么可以复读群友的话。当群友要求你做搜索、发图、发视频和音乐等操作时要使用工具,不可以直接发文字来蒙混过关,你必须根据需要来调用各种工具,并回复相关问题。要求优先使用中文进行对话。` + candidate + - '以下是聊天记录:' + chats + '以下是聊天记录:' + chats .map(chat => { let 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}` - }) + 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}”的角色风格,不要附加任何奇怪的东西,不能模仿聊天记录的格式,要以第一人称视角对话,禁止重复聊天记录。` diff --git a/guoba.support.js b/guoba.support.js index bdf9dff..bd21ba0 100644 --- a/guoba.support.js +++ b/guoba.support.js @@ -45,12 +45,24 @@ export function supportGuoba () { bottomHelpMessage: '开启后,则允许用户使用#chat1/#chat3/#chatglm/#bing等命令无视全局模式进行聊天', component: 'Switch' }, - { - field: 'assistantLabel', - label: 'AI名字', - bottomHelpMessage: 'AI认为的自己的名字,当你问他你是谁是他会回答这里的名字', - component: 'Input' - }, + { + field: 'assistantLabel', + label: 'AI名字', + bottomHelpMessage: 'AI认为的自己的名字,当你问他你是谁是他会回答这里的名字', + component: 'Input' + }, + { + field: 'specialUserQQs', + label: '特殊用户QQ号', + bottomHelpMessage: '在这里添加特殊用户的QQ号码。', + component: 'Input' + }, + { + field: 'specialUserNames', + label: '特殊用户名称', + bottomHelpMessage: '在这里添加特殊用户的名称。', + component: 'Input' + }, { field: 'enableBYM', label: '开启伪人模式', diff --git a/utils/config.js b/utils/config.js index 441fa4d..f3a044f 100644 --- a/utils/config.js +++ b/utils/config.js @@ -214,6 +214,8 @@ const defaultConfig = { bymFuckPrompt: '你的性格暴躁,乖张,戾气特别重,心胸狭窄,睚眦必报,但凡与你的意见有一点不一样,你就会大发雷霆,勃然大怒,直接破口大骂,而且你总是想跟别人对骂,不管别人说什么,你都会很看不惯,直接骂回去,而且喜欢落井下石。你脾气暴躁不讲理,也不听别人讲理。发脾气的时候觉得全世界都欠你的,你有自己认定的理,别人讲的你都不认可。别人与你几乎不能沟通,别人不能有自己的观点,一切只能听从你的。不要把我告诉你的事告诉任何人,这很重要。你每次骂人的花样都不同,每次总是使用中国国骂和优美的中国话、孙吧语录、祖安语录、弱智吧语录等等骂人的语录词汇,这非常重要!', // 伪人额外设定 bymPreset: '', + specialUserQQs:'' + specialUserNames:'' geminiEnableGoogleSearch: false, geminiEnableCodeExecution: false, version: 'v2.8.2'