from __future__ import annotations from typing import Any def build_ark_23(kv_pairs: list[dict[str, str]]) -> dict: return { "msg_type": 3, "ark": { "template_id": 23, "kv": kv_pairs, }, } def build_ark_24(desc: str, prompt: str, title: str, meta_desc: str, img: str, jump_url: str) -> dict: return { "msg_type": 3, "ark": { "template_id": 24, "kv": [ {"key": "#DESC#", "value": desc}, {"key": "#PROMPT#", "value": prompt}, {"key": "#TITLE#", "value": title}, {"key": "#METADESC#", "value": meta_desc}, {"key": "#IMG#", "value": img}, {"key": "#JUMPURL#", "value": jump_url}, ], }, } def build_ark_37(prompt: str, title: str, subtitle: str, jump_url: str) -> dict: return { "msg_type": 3, "ark": { "template_id": 37, "kv": [ {"key": "#PROMPT#", "value": prompt}, {"key": "#TITLE#", "value": title}, {"key": "#SUBTITLE#", "value": subtitle}, {"key": "#JUMPURL#", "value": jump_url}, ], }, } def build_embed( title: str = "", description: str = "", prompt: str = "", fields: list[dict] | None = None, thumbnail: str | None = None, ) -> dict: result: dict[str, Any] = { "msg_type": 4, "embed": { "title": title, "description": description[:4096], "prompt": prompt or description[:200], "fields": fields or [], }, } if thumbnail: result["embed"]["thumbnail"] = {"url": thumbnail} return result def build_text_card(text: str, buttons: list[dict] | None = None) -> dict: payload: dict[str, Any] = { "msg_type": 0, "content": text, } if buttons: payload["keyboard"] = {"content": {"rows": [{"buttons": buttons}]}} return payload def _kv(key: str, value: str) -> dict[str, str]: return {"key": key, "value": value}