chore: import deployable mai-bot source tree

This commit is contained in:
2026-05-11 00:51:12 +00:00
parent 4813699b3e
commit 7a54015f94
1009 changed files with 312999 additions and 16 deletions

View File

@@ -0,0 +1,69 @@
"""NapCat 消息工具扩展。"""
from __future__ import annotations
from typing import Any, Dict
from maibot_sdk import Tool
from maibot_sdk.types import ToolParameterInfo, ToolParamType
from .message import NapCatMessageApiMixin
def _tool_param(name: str, param_type: ToolParamType, description: str, required: bool) -> ToolParameterInfo:
"""构造工具参数声明。"""
return ToolParameterInfo(name=name, param_type=param_type, description=description, required=required)
@Tool(
"find_user_qq_id",
description="根据指定消息的 msg_id 查询该条消息发送者的 QQ 号信息",
parameters=[
_tool_param("msg_id", ToolParamType.STRING, "要查询的消息 ID", True),
],
)
async def handle_find_user_qq_id(self: NapCatMessageApiMixin, msg_id: str = "", **kwargs: Any) -> Dict[str, Any]:
"""根据消息 ID 查询发送者的 QQ 号信息。"""
del kwargs
normalized_msg_id = str(self._normalize_positive_int(msg_id, "msg_id"))
message_detail = await self._require_query_service().get_message_detail(normalized_msg_id)
if not isinstance(message_detail, dict):
return {
"success": False,
"content": f"未找到 msg_id={normalized_msg_id} 对应的消息记录",
"msg_id": normalized_msg_id,
}
sender = message_detail.get("sender", {})
if not isinstance(sender, dict):
sender = {}
user_id = str(message_detail.get("user_id") or sender.get("user_id") or sender.get("uin") or "").strip()
if not user_id:
return {
"success": False,
"content": f"已获取消息详情,但未解析出 msg_id={normalized_msg_id} 的发送者 QQ 号",
"msg_id": normalized_msg_id,
"message_detail": message_detail,
}
nickname = str(sender.get("nickname") or sender.get("name") or "").strip()
cardname = str(sender.get("card") or "").strip()
sender_info = {
"user_id": user_id,
"nickname": nickname or None,
"cardname": cardname or None,
}
display_name = cardname or nickname or user_id
return {
"success": True,
"content": f"msg_id={normalized_msg_id} 的发送者 QQ 号是 {user_id}(显示名:{display_name}",
"msg_id": normalized_msg_id,
"sender": sender_info,
}
NapCatMessageApiMixin.handle_find_user_qq_id = handle_find_user_qq_id