chore: import private baseline from gitea state
This commit is contained in:
431
plugin-templates/MaiBot-Napcat-Adapter/apis/message.py
Normal file
431
plugin-templates/MaiBot-Napcat-Adapter/apis/message.py
Normal file
@@ -0,0 +1,431 @@
|
||||
"""NapCat 消息与互动 API 端点。"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
from maibot_sdk import API
|
||||
|
||||
from .support import NapCatApiIdInput, NapCatApiParamsInput, NapCatApiSupportMixin
|
||||
|
||||
|
||||
class NapCatMessageApiMixin(NapCatApiSupportMixin):
|
||||
"""NapCat 消息、互动与 AI 相关 API。"""
|
||||
|
||||
@API("adapter.napcat.message.send_poke", description="发送戳一戳", version="1", public=True)
|
||||
async def api_send_poke(
|
||||
self,
|
||||
user_id: Optional[NapCatApiIdInput] = None,
|
||||
group_id: Optional[NapCatApiIdInput] = None,
|
||||
target_id: Optional[NapCatApiIdInput] = None,
|
||||
qq_id: Optional[NapCatApiIdInput] = None,
|
||||
) -> Dict[str, Any]:
|
||||
"""发送戳一戳。
|
||||
|
||||
Args:
|
||||
user_id: 目标用户号。
|
||||
group_id: 可选群号。
|
||||
target_id: 官方 ``send_poke`` 动作支持的目标 ID。
|
||||
qq_id: 兼容旧版调用方式的 ``user_id`` 别名。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
normalized_user_id_input = str(user_id).strip() if user_id is not None else ""
|
||||
normalized_qq_id_input = str(qq_id).strip() if qq_id is not None else ""
|
||||
|
||||
if normalized_user_id_input and normalized_qq_id_input:
|
||||
resolved_user_id = self._normalize_positive_int(user_id, "user_id")
|
||||
resolved_qq_id = self._normalize_positive_int(qq_id, "qq_id")
|
||||
if resolved_user_id != resolved_qq_id:
|
||||
raise ValueError("user_id 与 qq_id 不能同时传递不同的值")
|
||||
elif normalized_user_id_input:
|
||||
resolved_user_id = self._normalize_positive_int(user_id, "user_id")
|
||||
elif normalized_qq_id_input:
|
||||
resolved_user_id = self._normalize_positive_int(qq_id, "qq_id")
|
||||
else:
|
||||
raise ValueError("user_id 不能为空")
|
||||
|
||||
normalized_group_id: Optional[int] = None
|
||||
if group_id is not None and str(group_id).strip():
|
||||
normalized_group_id = self._normalize_positive_int(group_id, "group_id")
|
||||
|
||||
normalized_target_id: Optional[int] = None
|
||||
if target_id is not None and str(target_id).strip():
|
||||
normalized_target_id = self._normalize_positive_int(target_id, "target_id")
|
||||
|
||||
return await self._require_query_service().send_poke(
|
||||
user_id=resolved_user_id,
|
||||
group_id=normalized_group_id,
|
||||
target_id=normalized_target_id,
|
||||
)
|
||||
|
||||
@API("adapter.napcat.message.delete_msg", description="撤回消息", version="1", public=True)
|
||||
async def api_delete_msg(self, message_id: NapCatApiIdInput) -> Dict[str, Any]:
|
||||
"""撤回消息。
|
||||
|
||||
Args:
|
||||
message_id: 消息 ID。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._require_query_service().delete_message(
|
||||
message_id=self._normalize_positive_int(message_id, "message_id")
|
||||
)
|
||||
|
||||
@API("adapter.napcat.message.send_group_ai_record", description="发送群 AI 语音", version="1", public=True)
|
||||
async def api_send_group_ai_record(
|
||||
self,
|
||||
group_id: NapCatApiIdInput,
|
||||
character: object,
|
||||
text: object,
|
||||
) -> Dict[str, Any]:
|
||||
"""发送群 AI 语音。
|
||||
|
||||
Args:
|
||||
group_id: 群号。
|
||||
character: 角色标识。
|
||||
text: 语音文本。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._require_query_service().send_group_ai_record(
|
||||
group_id=self._normalize_positive_int(group_id, "group_id"),
|
||||
character=self._normalize_non_empty_string(character, "character"),
|
||||
text=self._normalize_non_empty_string(text, "text"),
|
||||
)
|
||||
|
||||
@API("adapter.napcat.message.set_msg_emoji_like", description="给消息贴表情", version="1", public=True)
|
||||
async def api_set_msg_emoji_like(
|
||||
self,
|
||||
message_id: NapCatApiIdInput,
|
||||
emoji_id: NapCatApiIdInput,
|
||||
set: bool = True,
|
||||
) -> Dict[str, Any]:
|
||||
"""给消息贴表情或取消表情。
|
||||
|
||||
Args:
|
||||
message_id: 消息 ID。
|
||||
emoji_id: 表情 ID。
|
||||
set: 是否设置为已贴表情。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._require_query_service().set_message_emoji_like(
|
||||
message_id=self._normalize_positive_int(message_id, "message_id"),
|
||||
emoji_id=self._normalize_positive_int(emoji_id, "emoji_id"),
|
||||
set_like=bool(set),
|
||||
)
|
||||
|
||||
@API("adapter.napcat.message.get_msg", description="获取消息详情", version="1", public=True)
|
||||
async def api_get_msg(self, message_id: NapCatApiIdInput) -> Optional[Dict[str, Any]]:
|
||||
"""获取消息详情。
|
||||
|
||||
Args:
|
||||
message_id: 消息 ID。
|
||||
|
||||
Returns:
|
||||
Optional[Dict[str, Any]]: 消息详情字典;失败时返回 ``None``。
|
||||
"""
|
||||
return await self._require_query_service().get_message_detail(
|
||||
str(self._normalize_positive_int(message_id, "message_id"))
|
||||
)
|
||||
|
||||
@API("adapter.napcat.message.get_forward_msg", description="获取合并转发消息", version="1", public=True)
|
||||
async def api_get_forward_msg(
|
||||
self,
|
||||
message_id: object = "",
|
||||
id: object = "",
|
||||
) -> Optional[Dict[str, Any]]:
|
||||
"""获取合并转发消息详情。
|
||||
|
||||
Args:
|
||||
message_id: 合并转发消息 ID。
|
||||
id: NapCat 官方文档中的兼容字段。
|
||||
|
||||
Returns:
|
||||
Optional[Dict[str, Any]]: 合并转发消息详情;失败时返回 ``None``。
|
||||
"""
|
||||
normalized_message_id = str(message_id or "").strip()
|
||||
normalized_forward_id = str(id or "").strip()
|
||||
|
||||
if normalized_message_id and normalized_forward_id and normalized_message_id != normalized_forward_id:
|
||||
raise ValueError("message_id 与 id 不能同时传递不同的值")
|
||||
if not normalized_message_id and not normalized_forward_id:
|
||||
raise ValueError("message_id 或 id 至少提供一个")
|
||||
|
||||
return await self._require_query_service().get_forward_message(
|
||||
message_id=normalized_message_id or None,
|
||||
forward_id=normalized_forward_id or None,
|
||||
)
|
||||
|
||||
@API("adapter.napcat.message.ark_share_group", description="分享群 (Ark)", version="1", public=True)
|
||||
async def api_action_ark_share_group(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``ArkShareGroup`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("ArkShareGroup", params)
|
||||
|
||||
@API("adapter.napcat.message.ark_share_peer", description="分享用户 (Ark)", version="1", public=True)
|
||||
async def api_action_ark_share_peer(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``ArkSharePeer`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("ArkSharePeer", params)
|
||||
|
||||
@API(
|
||||
"adapter.napcat.message.click_inline_keyboard_button", description="点击内联键盘按钮", version="1", public=True
|
||||
)
|
||||
async def api_action_click_inline_keyboard_button(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``click_inline_keyboard_button`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("click_inline_keyboard_button", params)
|
||||
|
||||
@API("adapter.napcat.message.fetch_emoji_like", description="获取表情点赞详情", version="1", public=True)
|
||||
async def api_action_fetch_emoji_like(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``fetch_emoji_like`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("fetch_emoji_like", params)
|
||||
|
||||
@API("adapter.napcat.message.forward_friend_single_msg", description="转发单条消息", version="1", public=True)
|
||||
async def api_action_forward_friend_single_msg(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``forward_friend_single_msg`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("forward_friend_single_msg", params)
|
||||
|
||||
@API("adapter.napcat.message.forward_group_single_msg", description="转发单条消息", version="1", public=True)
|
||||
async def api_action_forward_group_single_msg(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``forward_group_single_msg`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("forward_group_single_msg", params)
|
||||
|
||||
@API("adapter.napcat.message.friend_poke", description="发送戳一戳", version="1", public=True)
|
||||
async def api_action_friend_poke(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``friend_poke`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("friend_poke", params)
|
||||
|
||||
@API("adapter.napcat.message.get_ai_record", description="获取 AI 语音", version="1", public=True)
|
||||
async def api_action_get_ai_record(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``get_ai_record`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("get_ai_record", params)
|
||||
|
||||
@API("adapter.napcat.message.get_emoji_likes", description="获取消息表情点赞列表", version="1", public=True)
|
||||
async def api_action_get_emoji_likes(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``get_emoji_likes`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("get_emoji_likes", params)
|
||||
|
||||
@API("adapter.napcat.message.get_friend_msg_history", description="获取好友历史消息", version="1", public=True)
|
||||
async def api_action_get_friend_msg_history(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``get_friend_msg_history`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("get_friend_msg_history", params)
|
||||
|
||||
@API("adapter.napcat.message.get_group_msg_history", description="获取群历史消息", version="1", public=True)
|
||||
async def api_action_get_group_msg_history(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``get_group_msg_history`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("get_group_msg_history", params)
|
||||
|
||||
@API("adapter.napcat.message.mark_all_as_read", description="标记所有消息已读", version="1", public=True)
|
||||
async def api_action_mark_all_as_read(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``_mark_all_as_read`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("_mark_all_as_read", params)
|
||||
|
||||
@API("adapter.napcat.message.mark_group_msg_as_read", description="标记群聊已读", version="1", public=True)
|
||||
async def api_action_mark_group_msg_as_read(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``mark_group_msg_as_read`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("mark_group_msg_as_read", params)
|
||||
|
||||
@API("adapter.napcat.message.mark_msg_as_read", description="标记消息已读 (Go-CQHTTP)", version="1", public=True)
|
||||
async def api_action_mark_msg_as_read(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``mark_msg_as_read`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("mark_msg_as_read", params)
|
||||
|
||||
@API("adapter.napcat.message.mark_private_msg_as_read", description="标记私聊已读", version="1", public=True)
|
||||
async def api_action_mark_private_msg_as_read(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``mark_private_msg_as_read`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("mark_private_msg_as_read", params)
|
||||
|
||||
@API("adapter.napcat.message.send_ark_share", description="分享用户 (Ark)", version="1", public=True)
|
||||
async def api_action_send_ark_share(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``send_ark_share`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("send_ark_share", params)
|
||||
|
||||
@API("adapter.napcat.message.send_forward_msg", description="发送合并转发消息", version="1", public=True)
|
||||
async def api_action_send_forward_msg(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``send_forward_msg`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("send_forward_msg", params)
|
||||
|
||||
@API("adapter.napcat.message.send_group_ark_share", description="分享群 (Ark)", version="1", public=True)
|
||||
async def api_action_send_group_ark_share(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``send_group_ark_share`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("send_group_ark_share", params)
|
||||
|
||||
@API("adapter.napcat.message.send_group_forward_msg", description="发送群合并转发消息", version="1", public=True)
|
||||
async def api_action_send_group_forward_msg(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``send_group_forward_msg`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("send_group_forward_msg", params)
|
||||
|
||||
@API("adapter.napcat.message.send_msg", description="发送消息", version="1", public=True)
|
||||
async def api_action_send_msg(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``send_msg`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("send_msg", params)
|
||||
|
||||
@API(
|
||||
"adapter.napcat.message.send_private_forward_msg", description="发送私聊合并转发消息", version="1", public=True
|
||||
)
|
||||
async def api_action_send_private_forward_msg(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``send_private_forward_msg`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("send_private_forward_msg", params)
|
||||
|
||||
@API("adapter.napcat.message.send_private_msg", description="发送私聊消息", version="1", public=True)
|
||||
async def api_action_send_private_msg(self, params: NapCatApiParamsInput = None) -> Dict[str, Any]:
|
||||
"""调用 NapCat 的 ``send_private_msg`` 动作。
|
||||
|
||||
Args:
|
||||
params: 传递给 NapCat 的动作参数字典;具体字段请参考 NapCat 官方文档。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: NapCat 返回的原始响应字典。
|
||||
"""
|
||||
return await self._call_napcat_action("send_private_msg", params)
|
||||
Reference in New Issue
Block a user