From 73c7cfe67cb6859c4762774cde35e76d78c3e34a Mon Sep 17 00:00:00 2001 From: Krumio Date: Sat, 1 Mar 2025 13:52:18 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=AA=E4=BA=BA=E8=BF=9E=E7=BB=AD?= =?UTF-8?q?=E5=AF=B9=E8=AF=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/bym.js | 113 ++++++++++++++++++++++++++--------------------- guoba.support.js | 12 +++++ utils/config.js | 2 + 3 files changed, 76 insertions(+), 51 deletions(-) diff --git a/apps/bym.js b/apps/bym.js index 0fab4f2..894f2c1 100644 --- a/apps/bym.js +++ b/apps/bym.js @@ -38,14 +38,10 @@ export class bym extends plugin { let sender = e.sender.user_id let card = e.sender.card || e.sender.nickname let group = e.group_id - let prop = Math.floor(Math.random() * 100) + let prop = this._genProp() if (Config.assistantLabel && e.msg?.includes(Config.assistantLabel)) { prop = -1 } - // 去掉吧 频率有点逆天 - // if (e.msg?.endsWith('?')) { - // prop = prop / 10 - // } let fuck = false let candidate = Config.bymPreset @@ -60,59 +56,74 @@ export class bym extends plugin { candidate + `\n你的回复应该尽可能简练,像人类一样随意,不要附加任何奇怪的东西,如聊天记录的格式(比如${Config.assistantLabel}:),禁止重复聊天记录。` - let rsp = await core.sendMessage(e.msg, {}, Config.bymMode, e, { - enableSmart: Config.smartMode, - system: { - api: system, - qwen: system, - bing: system, - claude: system, - claude2: system, - gemini: system, - xh: system - }, - settings: { - replyPureTextCallback: msg => { - msg = filterResponseChunk(msg) - msg && e.reply(msg) + + const handleReply = async (e) => { + let rsp = await core.sendMessage(e.msg, {}, Config.bymMode, e, { + enableSmart: Config.smartMode, + system: { + api: system, + qwen: system, + bing: system, + claude: system, + claude2: system, + gemini: system, + xh: system }, - // 强制打开上下文,不然伪人笨死了 - enableGroupContext: true - } - }) - // let rsp = await client.sendMessage(e.msg, opt) - let text = rsp.text - let texts = customSplitRegex(text, /(? !!i) - if (finalMsg && finalMsg.length > 0) { - if (Math.floor(Math.random() * 100) < 10) { - await this.reply(finalMsg, true, { - recallMsg: fuck ? 10 : 0 + settings: { + replyPureTextCallback: msg => { + msg = filterResponseChunk(msg) + msg && e.reply(msg) + }, + // 强制打开上下文,不然伪人笨死了 + enableGroupContext: true + } + }) + // let rsp = await client.sendMessage(e.msg, opt) + let text = rsp.text + let texts = customSplitRegex(text, /(? !!i) + if (finalMsg && finalMsg.length > 0) { + if(index !== 0) await new Promise((resolve) => { + setTimeout(() => { + resolve() + }, Math.min(t.length * 200, 3000)) }) - } else { - await this.reply(finalMsg, false, { + await this.reply(finalMsg, (this._genProp() < 10) , { recallMsg: fuck ? 10 : 0 }) } - await new Promise((resolve, reject) => { - setTimeout(() => { - resolve() - }, Math.min(t.length * 200, 3000)) - }) + } + + if(Config.bymContinue){ + const delay = Config.bymContinueDelay || 10 + const continueEvent = await this.awaitContext(e.isGroup, delay, ""); + if(continueEvent){ + logger.info("bym继续对话") + await handleReply(continueEvent) + }else { + logger.mark("bym连续对话结束") + } } } + + await handleReply(e) + } return false } -} + + _genProp() { + return Math.floor(Math.random() * 100) + } +} \ No newline at end of file diff --git a/guoba.support.js b/guoba.support.js index f14782f..9a3e023 100644 --- a/guoba.support.js +++ b/guoba.support.js @@ -984,6 +984,18 @@ export function supportGuoba () { label: '伪人模式的额外预设', component: 'Input' }, + { + field: 'bymContinue', + label: '伪人模式连续对话', + component: 'Switch', + bottomHelpMessage: '开启后会在延时时长内监听触发者的消息来与 bot 连续对话', + }, + { + field: 'bymContinueDelay', + label: '伪人模式连续对话延时', + component: 'InputNumber', + bottomHelpMessage: '伪人模式连续对话延时时长,单位:秒', + }, { field: 'bymFuckPrompt', label: '伪人模式骂人反击的设定词', diff --git a/utils/config.js b/utils/config.js index 4c9a9eb..5381741 100644 --- a/utils/config.js +++ b/utils/config.js @@ -215,6 +215,8 @@ const defaultConfig = { // 伪人额外设定 bymPreset: '', bymMode: 'gemini', + bymContinue: false, + bymContinueDelay: 10, // 思考过程转发 forwardReasoning: true, geminiEnableGoogleSearch: false,