From e723fedce884a014eea120fc56bfc5d7892ec3fe Mon Sep 17 00:00:00 2001 From: Soulter <37870767+Soulter@users.noreply.github.com> Date: Thu, 15 Dec 2022 15:14:40 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E5=B7=B2=E7=9F=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- configs/config.yaml | 11 +++++++++-- cores/qqbot/core.py | 20 ++++++++++++++------ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/configs/config.yaml b/configs/config.yaml index edc76b45f..6fb684c1c 100644 --- a/configs/config.yaml +++ b/configs/config.yaml @@ -2,13 +2,20 @@ openai: key: chatGPTConfigs: engine: text-davinci-003 - max_tokens: 1024 + max_tokens: 800 temperature: 0.9 top_p: 1 frequency_penalty: 0.4 presence_penalty: 0.3 - total_tokens_limit: 2000 + total_tokens_limit: 700 + qqbot: appid: token: + +# 设置是否一个人一个会话 +uniqueSessionMode: false + +# QChannelBot 的版本 +version: 1.4 \ No newline at end of file diff --git a/cores/qqbot/core.py b/cores/qqbot/core.py index e6d210f53..13a2113c1 100644 --- a/cores/qqbot/core.py +++ b/cores/qqbot/core.py @@ -28,7 +28,6 @@ uniqueSession = False class botClient(botpy.Client): async def on_at_message_create(self, message: Message): - global stat_file try: if str(message.guild_id) not in count: @@ -95,7 +94,7 @@ def initBot(chatgpt_inst): with open("./configs/config.yaml", 'r', encoding='utf-8') as ymlfile: cfg = yaml.safe_load(ymlfile) - if cfg['qqbot']['uniqueSession'] == 'true': + if 'uniqueSessionMode' in cfg['qqbot'] and cfg['qqbot']['uniqueSessionMode'] == 'true': uniqueSession = True else: uniqueSession = False @@ -163,32 +162,41 @@ async def oper_msg(message, at=False): else: session_id = message.guild_id if session_id: + name = '' + if uniqueSession: + name = message.member.nick + else: + name = "频道" if qq_msg == "/reset": + session_dict[session_id] = [] if at: - await message.reply(content=f"{message.member.nick}(id: {session_id}) 的历史记录重置成功") + await message.reply(content=f"{name}(id: {session_id}) 的历史记录重置成功") else: await message.reply(content=f"你的历史记录重置成功") return if qq_msg[:4] == "/his": - #分页,每页5条 size_per_page = 3 page = 1 if qq_msg[5:]: page = int(qq_msg[5:]) + # 检查是否有过历史记录 + if session_id not in session_dict: + await message.reply(content=f"{name} 的历史记录为空") + return l = session_dict[session_id] max_page = len(l)//size_per_page + 1 if len(l)%size_per_page != 0 else len(l)//size_per_page p = get_prompts_by_cache_list(session_dict[session_id], divide=True, paging=True, size=size_per_page, page=page) if at: - await message.reply(content=f"{message.member.nick} 的历史记录如下:\n{p}\n第{page}页 | 共{max_page}页\n*输入/his 2跳转到第2页") + await message.reply(content=f"{name} 的历史记录如下:\n{p}\n第{page}页 | 共{max_page}页\n*输入/his 2跳转到第2页") else: await message.reply(content=f"历史记录如下:\n{p}\n第{page}页 | 共{max_page}页\n*输入/his 2跳转到第2页") return if qq_msg == "/token": if at: - await message.reply(content=f"{message.member.nick} 会话的token数: {get_user_usage_tokens(session_dict[session_id])}\n系统最大缓存token数: {max_tokens}") + await message.reply(content=f"{name} 会话的token数: {get_user_usage_tokens(session_dict[session_id])}\n系统最大缓存token数: {max_tokens}") else: await message.reply(content=f"会话的token数: {get_user_usage_tokens(session_dict[session_id])}\n系统最大缓存token数: {max_tokens}")