From 008a15163e57ead11610407288c040de3f8e2f8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98KimigaiiWuyi=E2=80=99?= <444835641@qq.com> Date: Thu, 30 Nov 2023 10:48:28 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E5=B0=9D=E8=AF=95=E9=80=82?= =?UTF-8?q?=E9=85=8D`nonebot.adapter.villa`=E7=9A=84=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GenshinUID/client.py | 46 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/GenshinUID/client.py b/GenshinUID/client.py index 1b4900e9..6bcb5bbb 100644 --- a/GenshinUID/client.py +++ b/GenshinUID/client.py @@ -340,6 +340,16 @@ def del_file(path: Path): os.remove(path) +def _vill_kb(index: int, button: Dict): + from nonebot.adapters.villa.models import InputButton + + return InputButton( + id=str(index), + text=button['text'], + input=button['data'], + ) + + async def villa_send( bot: Bot, content: Optional[str], @@ -351,6 +361,7 @@ async def villa_send( target_id: Optional[str], target_type: Optional[str], ): + from nonebot.adapters.villa.models import Panel from nonebot.adapters.villa import Bot, Message, MessageSegment from nonebot.adapters.villa.api import ( PostMessageContent, @@ -367,6 +378,7 @@ async def villa_send( if image: if image.startswith('link://'): img_url = image.replace('link://', '') + img_url = await bot.transfer_image(url=img_url) else: img_bytes = base64.b64decode( image.replace('base64://', '') @@ -386,7 +398,39 @@ async def villa_send( if markdown: logger.warning('[gscore] villa暂不支持发送markdown消息') if buttons: - logger.warning('[gscore] villa暂不支持发送buttons消息') + bt = [] + bigc = [] + midc = [] + smc = [] + for index, button in enumerate(buttons): + if isinstance(button, Dict): + bt.append(_vill_kb(index, button)) + if isinstance(button, List): + if len(button) == 1: + bigc.append([_vill_kb(100 + index, button[0])]) + elif len(button) == 2: + _t = [] + for indexB, btn in enumerate(button): + _t.append(_vill_kb(200 + index + indexB, btn)) + midc.append(_t) + else: + _t = [] + for indexC, btn in enumerate(button): + _t.append(_vill_kb(300 + index + indexC, btn)) + if len(_t) >= 3: + smc.append(_t) + _t = [] + smc.append(_t) + if bt: + msg += MessageSegment.components(*bt) + else: + panel = Panel( + mid_component_group_list=midc, + small_component_group_list=smc, + big_component_group_list=bigc, + ) + + msg += MessageSegment.panel(panel) content_info = await bot.parse_message_content(msg)