From 4de48a26ddec4da490950ecf82a84ac1aa50478a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wuyi=E6=97=A0=E7=96=91?= <444835641@qq.com> Date: Sun, 5 Mar 2023 14:32:37 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20=E4=BF=AE=E6=94=B9=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E5=8F=91=E9=80=81=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GenshinUID/auto_install.py | 7 ++----- GenshinUID/client.py | 20 +++++++++++++++----- GenshinUID/path.py | 16 ++++++++++++++++ 3 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 GenshinUID/path.py diff --git a/GenshinUID/auto_install.py b/GenshinUID/auto_install.py index f78290a4..0cef6070 100644 --- a/GenshinUID/auto_install.py +++ b/GenshinUID/auto_install.py @@ -1,17 +1,14 @@ import asyncio import subprocess -from pathlib import Path from git.repo import Repo from pip._internal import main as pip_install -CORE_PATH = Path().cwd().parent / 'gsuid_core' -GSUID_PATH = CORE_PATH / 'gsuid_core' / 'plugins' / 'GenshinUID' +from .path import RUN_CORE, CORE_PATH, GSUID_PATH + GS_GIT = 'https://ghproxy.com/https://github.com/KimigaiiWuyi/GenshinUID.git' CORE_GIT = 'https://ghproxy.com/https://github.com/Genshin-bots/gsuid-core.git' -RUN_CORE = CORE_PATH / 'gsuid_core' - async def _install(): if not CORE_PATH.exists(): diff --git a/GenshinUID/client.py b/GenshinUID/client.py index ad484a66..cd239569 100644 --- a/GenshinUID/client.py +++ b/GenshinUID/client.py @@ -1,5 +1,6 @@ import asyncio -from typing import Union +from base64 import b64encode +from typing import Union, Optional import websockets.client from nonebot import get_bot @@ -33,14 +34,14 @@ class GsClient: logger.info(f'【接收】[gsuid-core]: {msg}') # 解析消息 content = '' - image = '' + image: Optional[bytes] = None if msg.content: for _c in msg.content: if _c.data: if _c.type == 'text': content += _c.data elif _c.type == 'image': - image += _c.data + image = _c.data elif _c.type and _c.type.startswith('log'): _type = _c.type.split('_')[-1].lower() getattr(logger, _type)(_c.data) @@ -49,7 +50,11 @@ class GsClient: # 根据bot_id字段发送消息 if msg.bot_id == 'onebot': - result_image = f'[CQ:image,file={image}]' if image else '' + result_image = ( + f'[CQ:image,file=base64://{b64encode(image).decode()}]' + if image + else '' + ) result_msg = content + result_image if msg.target_type == 'group': await bot.call_api( @@ -77,13 +82,18 @@ class GsClient: content=content, ) elif msg.bot_id == 'qqguild': + result = {} + if image: + result['file_image'] = image + if content: + result['content'] = content if msg.target_type == 'group': await bot.call_api( 'post_messages', channel_id=int(msg.target_id) if msg.target_id else 0, - content=content, + **result, ) except ConnectionClosedError: logger.warning(f'与[gsuid-core]断开连接! Bot_ID: {BOT_ID}') diff --git a/GenshinUID/path.py b/GenshinUID/path.py new file mode 100644 index 00000000..fd466731 --- /dev/null +++ b/GenshinUID/path.py @@ -0,0 +1,16 @@ +from pathlib import Path + +from nonebot import get_driver + +driver = get_driver() + +_CORE_PATH = Path().cwd().parent / 'gsuid_core' + +CORE_PATH = ( + Path(driver.config.gsuid_core_path) + if hasattr(driver.config, 'gsuid_core_path') + else _CORE_PATH +) + +GSUID_PATH = CORE_PATH / 'gsuid_core' / 'plugins' / 'GenshinUID' +RUN_CORE = CORE_PATH / 'gsuid_core'