一个用于聚合第三方 API 的 AstrBot 插件,支持多种 API 服务的统一管理和调用。
data/plugins/ 目录下| 命令 | 说明 |
|---|---|
/api list | 列出所有可用的 API 处理器 |
/api keywords | 列出所有可用的关键词触发 |
/api call <名称> | 调用指定的 API 处理器 |
/api cache status | 查看缓存状态 |
/api cache clear | 清除所有缓存 |
/api reload | 重新加载 API 配置(管理员) |
# 列出可用的 API /api list # 调用指定的 API /api call weather 北京 # 查看缓存状态 /api cache status # 清除缓存 /api cache clear # 查看关键词列表 /api keywords
配置好 ak317 类型的 API 后,用户可以直接发送关键词触发对应的 API:
# 发送关键词 随机自拍 → 返回随机自拍图片 网易云点歌 → 返回网易云点歌结果 毒鸡汤 → 返回毒鸡汤内容
在 _conf_schema.json 中定义了以下配置项:
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
api_providers | object | {} | API 提供商配置列表 |
keyword_trigger_enabled | bool | true | 是否启用关键词触发 |
default_timeout | int | 30 | 默认请求超时时间(秒) |
max_retries | int | 3 | 请求失败最大重试次数 |
enable_cache | bool | true | 是否启用响应缓存 |
cache_ttl | int | 3600 | 缓存有效期(秒) |
log_level | string | INFO | 日志级别 |
在 WebUI 中配置 API 提供商:
{
"api_providers": {
"ak317": {
"type": "ak317",
"api_key": "你的密钥",
"base_url": "https://api.317ak.cn",
"enabled_apis": null,
"keyword_mapping": {
"自拍": "随机自拍",
"点歌": "网易云点歌"
}
}
}
}
| 配置项 | 类型 | 说明 |
|---|---|---|
type | string | 固定为 ak317 |
api_key | string | 317ak 平台的 API 密钥 (ckey) |
base_url | string | API 基础 URL,默认 https://api.317ak.cn |
enabled_apis | array | 启用的 API 列表,为 null 启用全部 |
keyword_mapping | object | 自定义关键词映射 {触发词: API名称} |
目前支持以下 API 提供商:
| 类型 | 说明 | 配置项 |
|---|---|---|
ak317 | 317ak API 平台 | api_key, base_url, enabled_apis, keyword_mapping |
openai | OpenAI Chat API | api_key, model, base_url |
weather | WeatherAPI 天气 | api_key, base_url |
继承 BaseAPIHandler 类并实现必要的方法:
from api_handlers import BaseAPIHandler, APIResponse
class MyAPIHandler(BaseAPIHandler):
def __init__(self, api_key: str, **kwargs):
super().__init__(
name="my_api",
api_key=api_key,
base_url="https://api.example.com",
**kwargs
)
def _get_default_headers(self) -> dict:
return {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
async def call(self, query: str) -> APIResponse:
return await self.request(
method="GET",
endpoint="search",
params={"q": query}
)
在插件中注册自定义处理器:
handler = MyAPIHandler(api_key="your-key")
plugin.register_handler("my_api", handler)
astrbot-api-aggregation/ ├── main.py # 插件主入口 ├── metadata.yaml # 插件元数据 ├── requirements.txt # Python 依赖 ├── _conf_schema.json # 配置模式定义 ├── config.example.json # 配置示例 ├── api_handlers/ # API 处理器模块 │ ├── __init__.py │ ├── base.py # 基础 API 处理器 │ ├── examples.py # 示例处理器 │ └── ak317.py # 317ak 处理器 └── README.md # 插件说明文档
AGPL-3.0 License
欢迎提交 Issue 和 Pull Request!