新增QQ Bot适配器完整代码栈,包含: 1. 基础适配器入口与工具类封装 2. 会话管理、重试队列与流量控制 3. 命令系统与内置指令(ping/help/status等) 4. 富媒体消息处理与格式转换 5. 引用存储与审批管理 6. 凭证备份与会话持久化 7. 健康检查与交互回调系统
81 lines
2.1 KiB
Python
81 lines
2.1 KiB
Python
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}
|