367 lines
16 KiB
Python
367 lines
16 KiB
Python
"""NapCat 账号与用户侧 API 端点。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any, Dict, List, Optional
|
|
|
|
from maibot_sdk import API
|
|
|
|
from .support import NapCatApiIdInput, NapCatApiParamsInput, NapCatApiSupportMixin
|
|
|
|
|
|
class NapCatAccountApiMixin(NapCatApiSupportMixin):
|
|
"""NapCat 账号、好友与资料相关 API。"""
|
|
|
|
@API("adapter.napcat.account.set_qq_profile", description="设置 QQ 账号资料", version="1", public=True)
|
|
async def api_set_qq_profile(
|
|
self,
|
|
nickname: object,
|
|
personal_note: str = "",
|
|
sex: str = "",
|
|
) -> Dict[str, Any]:
|
|
"""设置 QQ 账号资料。
|
|
|
|
Args:
|
|
nickname: 新昵称。
|
|
personal_note: 个性签名。
|
|
sex: 性别,支持 ``male``、``female``、``unknown``。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
normalized_sex = str(sex or "").strip().lower()
|
|
if normalized_sex and normalized_sex not in {"male", "female", "unknown"}:
|
|
raise ValueError("sex 必须为 male、female 或 unknown")
|
|
return await self._require_query_service().set_qq_profile(
|
|
nickname=self._normalize_non_empty_string(nickname, "nickname"),
|
|
personal_note=str(personal_note or "").strip(),
|
|
sex=normalized_sex,
|
|
)
|
|
|
|
@API("adapter.napcat.account.get_stranger_info", description="获取陌生人信息", version="1", public=True)
|
|
async def api_get_stranger_info(
|
|
self,
|
|
user_id: NapCatApiIdInput,
|
|
no_cache: bool = False,
|
|
) -> Optional[Dict[str, Any]]:
|
|
"""获取陌生人信息。
|
|
|
|
Args:
|
|
user_id: 用户号。
|
|
no_cache: 是否禁用缓存。
|
|
|
|
Returns:
|
|
Optional[Dict[str, Any]]: 陌生人信息字典;失败时返回 ``None``。
|
|
"""
|
|
return await self._require_query_service().get_stranger_info(
|
|
str(self._normalize_positive_int(user_id, "user_id")),
|
|
no_cache=bool(no_cache),
|
|
)
|
|
|
|
@API("adapter.napcat.account.get_friend_list", description="获取好友列表", version="1", public=True)
|
|
async def api_get_friend_list(self, no_cache: bool = False) -> Optional[List[Dict[str, Any]]]:
|
|
"""获取好友列表。
|
|
|
|
Args:
|
|
no_cache: 是否禁用缓存。
|
|
|
|
Returns:
|
|
Optional[List[Dict[str, Any]]]: 好友信息列表;失败时返回 ``None``。
|
|
"""
|
|
return await self._require_query_service().get_friend_list(no_cache=bool(no_cache))
|
|
|
|
@API("adapter.napcat.account.create_collection", description="创建收藏", version="1", public=True)
|
|
async def api_action_create_collection(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``create_collection`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("create_collection", params)
|
|
|
|
@API("adapter.napcat.account.delete_friend", description="删除好友", version="1", public=True)
|
|
async def api_action_delete_friend(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``delete_friend`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("delete_friend", params)
|
|
|
|
@API("adapter.napcat.account.fetch_custom_face", description="获取自定义表情", version="1", public=True)
|
|
async def api_action_fetch_custom_face(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``fetch_custom_face`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("fetch_custom_face", params)
|
|
|
|
@API("adapter.napcat.account.get_ai_characters", description="获取AI角色列表", version="1", public=True)
|
|
async def api_action_get_ai_characters(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``get_ai_characters`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("get_ai_characters", params)
|
|
|
|
@API("adapter.napcat.account.get_clientkey", description="获取ClientKey", version="1", public=True)
|
|
async def api_action_get_clientkey(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``get_clientkey`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("get_clientkey", params)
|
|
|
|
@API("adapter.napcat.account.get_collection_list", description="获取收藏列表", version="1", public=True)
|
|
async def api_action_get_collection_list(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``get_collection_list`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("get_collection_list", params)
|
|
|
|
@API("adapter.napcat.account.get_cookies", description="获取 Cookies", version="1", public=True)
|
|
async def api_action_get_cookies(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``get_cookies`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("get_cookies", params)
|
|
|
|
@API(
|
|
"adapter.napcat.account.get_friends_with_category", description="获取带分组的好友列表", version="1", public=True
|
|
)
|
|
async def api_action_get_friends_with_category(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``get_friends_with_category`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("get_friends_with_category", params)
|
|
|
|
@API("adapter.napcat.account.get_mini_app_ark", description="获取小程序 Ark", version="1", public=True)
|
|
async def api_action_get_mini_app_ark(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``get_mini_app_ark`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("get_mini_app_ark", params)
|
|
|
|
@API("adapter.napcat.account.get_profile_like", description="获取资料点赞", version="1", public=True)
|
|
async def api_action_get_profile_like(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``get_profile_like`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("get_profile_like", params)
|
|
|
|
@API("adapter.napcat.account.get_recent_contact", description="获取最近会话", version="1", public=True)
|
|
async def api_action_get_recent_contact(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``get_recent_contact`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("get_recent_contact", params)
|
|
|
|
@API("adapter.napcat.account.get_rkey", description="获取扩展 RKey", version="1", public=True)
|
|
async def api_action_get_rkey(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``get_rkey`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("get_rkey", params)
|
|
|
|
@API("adapter.napcat.account.get_rkey_server", description="获取 RKey 服务器", version="1", public=True)
|
|
async def api_action_get_rkey_server(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``get_rkey_server`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("get_rkey_server", params)
|
|
|
|
@API(
|
|
"adapter.napcat.account.get_unidirectional_friend_list",
|
|
description="获取单向好友列表",
|
|
version="1",
|
|
public=True,
|
|
)
|
|
async def api_action_get_unidirectional_friend_list(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``get_unidirectional_friend_list`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("get_unidirectional_friend_list", params)
|
|
|
|
@API("adapter.napcat.account.internal_ocr_image", description="图片 OCR 识别 (内部)", version="1", public=True)
|
|
async def api_action_internal_ocr_image(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``.ocr_image`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action(".ocr_image", params)
|
|
|
|
@API("adapter.napcat.account.nc_get_rkey", description="获取 RKey", version="1", public=True)
|
|
async def api_action_nc_get_rkey(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``nc_get_rkey`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("nc_get_rkey", params)
|
|
|
|
@API("adapter.napcat.account.ocr_image", description="图片 OCR 识别", version="1", public=True)
|
|
async def api_action_ocr_image(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``ocr_image`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("ocr_image", params)
|
|
|
|
@API("adapter.napcat.account.send_like", description="点赞", version="1", public=True)
|
|
async def api_action_send_like(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``send_like`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("send_like", params)
|
|
|
|
@API("adapter.napcat.account.set_diy_online_status", description="设置自定义在线状态", version="1", public=True)
|
|
async def api_action_set_diy_online_status(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``set_diy_online_status`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("set_diy_online_status", params)
|
|
|
|
@API("adapter.napcat.account.set_friend_add_request", description="处理加好友请求", version="1", public=True)
|
|
async def api_action_set_friend_add_request(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``set_friend_add_request`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("set_friend_add_request", params)
|
|
|
|
@API("adapter.napcat.account.set_friend_remark", description="设置好友备注", version="1", public=True)
|
|
async def api_action_set_friend_remark(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``set_friend_remark`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("set_friend_remark", params)
|
|
|
|
@API("adapter.napcat.account.set_qq_avatar", description="设置QQ头像", version="1", public=True)
|
|
async def api_action_set_qq_avatar(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``set_qq_avatar`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("set_qq_avatar", params)
|
|
|
|
@API("adapter.napcat.account.set_self_longnick", description="设置个性签名", version="1", public=True)
|
|
async def api_action_set_self_longnick(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``set_self_longnick`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("set_self_longnick", params)
|
|
|
|
@API("adapter.napcat.account.translate_en2zh", description="英文单词翻译", version="1", public=True)
|
|
async def api_action_translate_en2zh(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
|
"""调用 NapCat 的 ``translate_en2zh`` 动作。
|
|
|
|
Args:
|
|
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
|
|
|
Returns:
|
|
Dict[str, Any]: NapCat 返回的原始响应字典。
|
|
"""
|
|
return await self._call_napcat_action("translate_en2zh", params)
|