添加注释,增加redis支持,添加了聊天记录构建支持

This commit is contained in:
2026-01-02 17:10:42 +08:00
parent 3163bbf8c1
commit 01b83803c1
24 changed files with 965 additions and 313 deletions

View File

@@ -1,78 +1,106 @@
"""
账号相关 API 模块
账号与状态相关 API 模块
该模块定义了 `AccountAPI` Mixin 类,提供了所有与机器人自身账号信息、
状态设置等相关的 OneBot v11 API 封装。
"""
import json
from typing import Dict, Any
from .base import BaseAPI
from models.objects import LoginInfo, VersionInfo, Status
from core.redis_manager import redis_client as redis_manager
class AccountAPI(BaseAPI):
"""
账号相关 API Mixin
`AccountAPI` Mixin 类,提供了所有与机器人账号、状态相关的 API 方法。
"""
async def get_login_info(self) -> LoginInfo:
async def get_login_info(self, no_cache: bool = False) -> LoginInfo:
"""
获取登录号信息
获取当前登录的机器人账号信息
:return: 登录信息对象
Args:
no_cache (bool, optional): 是否不使用缓存直接从服务器获取最新信息。Defaults to False.
Returns:
LoginInfo: 包含登录号 QQ 和昵称的 `LoginInfo` 数据对象。
"""
cache_key = f"neobot:cache:get_login_info:{self.self_id}"
if not no_cache:
cached_data = await redis_manager.get(cache_key)
if cached_data:
return LoginInfo(**json.loads(cached_data))
res = await self.call_api("get_login_info")
await redis_manager.set(cache_key, json.dumps(res), ex=3600) # 缓存 1 小时
return LoginInfo(**res)
async def get_version_info(self) -> VersionInfo:
"""
获取版本信息
获取 OneBot v11 实现的版本信息
:return: 版本信息对象
Returns:
VersionInfo: 包含 OneBot 实现版本信息的 `VersionInfo` 数据对象。
"""
res = await self.call_api("get_version_info")
return VersionInfo(**res)
async def get_status(self) -> Status:
"""
获取状态
获取 OneBot v11 实现的状态信息。
:return: 状态对象
Returns:
Status: 包含 OneBot 状态信息的 `Status` 数据对象。
"""
res = await self.call_api("get_status")
return Status(**res)
async def bot_exit(self) -> Dict[str, Any]:
"""
退出机器人
机器人进程退出(需要实现端支持)。
:return: API 响应结果
Returns:
Dict[str, Any]: OneBot API 的响应数据。
"""
return await self.call_api("bot_exit")
async def set_self_longnick(self, long_nick: str) -> Dict[str, Any]:
"""
设置个性签名
设置机器人账号的个性签名
:param long_nick: 个性签名内容
:return: API 响应结果
Args:
long_nick (str): 要设置的个性签名内容。
Returns:
Dict[str, Any]: OneBot API 的响应数据。
"""
return await self.call_api("set_self_longnick", {"longNick": long_nick})
async def set_input_status(self, user_id: int, event_type: int) -> Dict[str, Any]:
"""
设置输入状态
设置 "对方正在输入..." 状态提示。
:param user_id: 用户 ID
:param event_type: 事件类型
:return: API 响应结果
Args:
user_id (int): 目标用户的 QQ 号。
event_type (int): 事件类型。
Returns:
Dict[str, Any]: OneBot API 的响应数据。
"""
return await self.call_api("set_input_status", {"user_id": user_id, "event_type": event_type})
async def set_diy_online_status(self, face_id: int, face_type: int, wording: str) -> Dict[str, Any]:
"""
设置自定义在线状态
设置自定义"在线状态"
:param face_id: 状态 ID
:param face_type: 状态类型
:param wording: 状态描述
:return: API 响应结果
Args:
face_id (int): 状态的表情 ID。
face_type (int): 状态的表情类型。
wording (str): 状态的描述文本。
Returns:
Dict[str, Any]: OneBot API 的响应数据。
"""
return await self.call_api("set_diy_online_status", {
"face_id": face_id,
@@ -82,43 +110,55 @@ class AccountAPI(BaseAPI):
async def set_online_status(self, status_code: int) -> Dict[str, Any]:
"""
设置在线状态
设置在线状态(如在线、离开、摸鱼等)。
:param status_code: 状态码
:return: API 响应结果
Args:
status_code (int): 目标在线状态的状态码。
Returns:
Dict[str, Any]: OneBot API 的响应数据。
"""
return await self.call_api("set_online_status", {"status_code": status_code})
async def set_qq_profile(self, **kwargs) -> Dict[str, Any]:
"""
设置 QQ 资料
设置机器人账号的个人资料
:param kwargs: 个人资料相关参数
:return: API 响应结果
Args:
**kwargs: 个人资料的相关参数,具体字段请参考 OneBot v11 规范。
Returns:
Dict[str, Any]: OneBot API 的响应数据。
"""
return await self.call_api("set_qq_profile", kwargs)
async def set_qq_avatar(self, **kwargs) -> Dict[str, Any]:
"""
设置 QQ 头像
设置机器人账号的头像
:param kwargs: 头像相关参数
:return: API 响应结果
Args:
**kwargs: 头像的相关参数,具体字段请参考 OneBot v11 规范。
Returns:
Dict[str, Any]: OneBot API 的响应数据。
"""
return await self.call_api("set_qq_avatar", kwargs)
async def get_clientkey(self) -> Dict[str, Any]:
"""
获取客户端密钥
获取客户端密钥(通常用于 QQ 登录相关操作)。
:return: API 响应结果
Returns:
Dict[str, Any]: OneBot API 的响应数据。
"""
return await self.call_api("get_clientkey")
async def clean_cache(self) -> Dict[str, Any]:
"""
清理缓存
清理 OneBot v11 实现端的缓存
:return: API 响应结果
Returns:
Dict[str, Any]: OneBot API 的响应数据。
"""
return await self.call_api("clean_cache")