From 625603105c8363e9e5278cedd17ef9dd16486a08 Mon Sep 17 00:00:00 2001 From: MoeSnowyFox Date: Sat, 16 Nov 2024 15:06:54 +0800 Subject: [PATCH] =?UTF-8?q?:zap:=20=E6=9B=B4=E6=96=B0=E5=B0=91=E9=87=8F?= =?UTF-8?q?=E6=96=87=E6=A1=A3,=20=E5=87=8F=E5=B0=91=E5=A4=B8=E8=B5=9E?= =?UTF-8?q?=E5=90=8D=E5=8D=95=E6=96=87=E4=BB=B6=E5=BC=80=E5=90=AF=E6=AC=A1?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- nonebot_plugin_marshoai/azure.py | 4 ++++ nonebot_plugin_marshoai/util.py | 22 ++++++++++++++++------ 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 8840f3fb..5a050e0b 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ _✨ 使用 Azure OpenAI 推理服务的聊天机器人插件 ✨_ ## 🤖 获取 token - 新建一个[personal access token](https://github.com/settings/tokens/new),**不需要给予任何权限**。 -- 将新建的 token 复制,添加到`config.py`文件中的`MARSHOAI_TOKEN`配置项中。 +- 将新建的 token 复制,添加到`.env`文件中的`marshoai_token`配置项中。 ## 🎉 使用 发送`marsho`指令可以获取使用说明(若在配置中自定义了指令前缀请使用自定义的指令前缀)。 @@ -114,7 +114,7 @@ _✨ 使用 Azure OpenAI 推理服务的聊天机器人插件 ✨_ } ``` -## ⚙️ 配置 +## ⚙️ 可配置项 在 nonebot2 项目的`.env`文件中添加下表中的配置 @@ -138,7 +138,7 @@ _✨ 使用 Azure OpenAI 推理服务的聊天机器人插件 ✨_ ## ❤ 鸣谢&版权说明 "Marsho" logo 由 [@Asankilp](https://github.com/Asankilp) 绘制,基于 [CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) 许可下提供。 -"nonebot-plugin-marshoai" 基于 [MIT](https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/blob/main/LICENSE) 许可下提供。 +"nonebot-plugin-marshoai" 基于 [MIT](./LICENSE) 许可下提供。 ## 🕊️ TODO - [x] [Melobot](https://github.com/Meloland/melobot) 实现 diff --git a/nonebot_plugin_marshoai/azure.py b/nonebot_plugin_marshoai/azure.py index 4ac4f1df..1c583c80 100644 --- a/nonebot_plugin_marshoai/azure.py +++ b/nonebot_plugin_marshoai/azure.py @@ -117,6 +117,8 @@ async def nickname(event: Event, name=None): nicknames = await get_nicknames() user_id = event.get_user_id() if not name: + if user_id not in nicknames: + await nickname_cmd.finish("你未设置昵称") await nickname_cmd.finish("你的昵称为:" + str(nicknames[user_id])) if name == "reset": await set_nickname(user_id, "") @@ -142,6 +144,8 @@ async def marsho(target: MsgTarget, event: Event, text: Optional[UniMsg] = None) nickname_prompt = f"\n*此消息的说话者:{nickname}*" else: nickname_prompt = "" + #user_nickname = event.sender.nickname + #nickname_prompt = f"\n*此消息的说话者:{user_nickname}" if config.marshoai_enable_nickname_tip: await UniMessage( "*你未设置自己的昵称。推荐使用'nickname [昵称]'命令设置昵称来获得个性化(可能)回答。" diff --git a/nonebot_plugin_marshoai/util.py b/nonebot_plugin_marshoai/util.py index 845bebf3..6cee272d 100644 --- a/nonebot_plugin_marshoai/util.py +++ b/nonebot_plugin_marshoai/util.py @@ -6,11 +6,14 @@ from typing import Any import httpx import nonebot_plugin_localstore as store from datetime import datetime + +from cashews.backends.redis.client_side import logger from zhDateTime import DateTime # type: ignore from azure.ai.inference.aio import ChatCompletionsClient from azure.ai.inference.models import SystemMessage from .config import config +nickname_json = None async def get_image_b64(url): headers = { @@ -91,6 +94,7 @@ async def load_context_from_json(name: str): async def set_nickname(user_id: str, name: str): + global nickname_json filename = store.get_plugin_data_file("nickname.json") if not os.path.exists(filename): data = {} @@ -98,17 +102,23 @@ async def set_nickname(user_id: str, name: str): with open(filename, "r", encoding="utf-8") as f: data = json.load(f) data[user_id] = name + if name == "" and user_id in data: + del data[user_id] with open(filename, "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=4) + nickname_json = data async def get_nicknames(): - filename = store.get_plugin_data_file("nickname.json") - try: - with open(filename, "r", encoding="utf-8") as f: - return json.load(f) - except FileNotFoundError: - return {} + global nickname_json + if nickname_json is None: + filename = store.get_plugin_data_file("nickname.json") + try: + with open(filename, "r", encoding="utf-8") as f: + nickname_json = json.load(f) + except Exception: + nickname_json = {} + return nickname_json def get_prompt():