🎨 尝试转换MessageSegment.node

This commit is contained in:
KimigaiiWuyi 2023-11-16 02:59:15 +08:00
parent 131b7d3d5e
commit 22ef03da38

View File

@ -64,8 +64,9 @@ class MessageSegment:
return Message(type='image', data=img) return Message(type='image', data=img)
elif img.startswith('base64://'): elif img.startswith('base64://'):
img = b64decode(img.replace('base64://', '')) img = b64decode(img.replace('base64://', ''))
with open(img, 'rb') as fp: else:
img = fp.read() with open(img, 'rb') as fp:
img = fp.read()
if enable_pic_srv: if enable_pic_srv:
name = f'{uuid.uuid1()}.jpg' name = f'{uuid.uuid1()}.jpg'
@ -173,19 +174,37 @@ class MessageSegment:
return Message(type=f'log_{type}', data=content) return Message(type=f'log_{type}', data=content)
async def _conver_image_to_url(message: Message) -> List[Message]:
if pclient is not None:
img_text: str = message.data # type: ignore
bio = BytesIO(b64decode(img_text[9:]))
img = Image.open(bio)
img_url = await pclient.upload(f'{uuid.uuid4()}.jpg', bio)
_message = [
MessageSegment.image(img_url if img_url else img_text),
MessageSegment.image_size(img.size),
]
return _message
return [message]
async def _convert_message( async def _convert_message(
message: Union[Message, str, bytes] message: Union[Message, str, bytes]
) -> List[Message]: ) -> List[Message]:
if isinstance(message, Message): if isinstance(message, Message):
if message.type == 'image' and pclient is not None: if message.data is None:
img_text: str = message.data # type: ignore return [message]
bio = BytesIO(b64decode(img_text[9:]))
img = Image.open(bio) if message.type == 'image':
img_url = await pclient.upload(f'{uuid.uuid4()}.jpg', bio) _message = await _conver_image_to_url(message)
_message = [ elif message.type == 'node':
MessageSegment.image(img_url if img_url else img_text), _temp = []
MessageSegment.image_size(img.size), for i in message.data:
] if i.type == 'image':
_temp.extend(await _conver_image_to_url(i))
else:
_temp.append(i)
_message = [MessageSegment.node(_temp)]
else: else:
_message = [message] _message = [message]
elif isinstance(message, str): elif isinstance(message, str):