Lazy loaded image
Gemini_studio
Words 2085Read Time 6 min
2026-1-13
好的,我们来一步一步完成这个适配器的开发。

第一步:分析接口规范

在编写代码之前,我们需要仔细阅读并总结 AstrBot 和黑盒语音(Heychat)的文档,明确双方的接口规范和通信方式。

1. AstrBot 平台适配器规范分析

根据 AstrBot 的适配器开发文档,一个标准的平台适配器需要具备以下特征:
  • 继承基类: 适配器主类需要继承自 astrlib.api.platform.Platform
  • 注册: 使用 @register_platform_adapter 装饰器来注册适配器,并定义其名称、描述和默认配置文件模板。
  • 核心方法:
    • __init__: 构造函数,用于接收用户配置和事件队列。所有从平台接收到的消息,在处理并转换为 AstrBot 的标准事件格式后,都需要放入 event_queue
    • async def start(self): 适配器的启动入口。通常在这里启动一个循环任务,用于连接平台、接收消息,例如启动一个 WebSocket 客户端。
    • async def send_message(self, session: MessageSession, message: MessageChain): 发送消息的接口。当 AstrBot 内核需要通过此平台发送消息时,会调用这个方法。我们需要在这里将 AstrBot 的 MessageChain 格式转换为目标平台(黑盒语音)API所要求的格式,并通过 HTTP 请求发送出去。
  • 事件转换: 从平台接收到的原始事件(如JSON数据),需要被解析并转换为 AstrBot 的标准事件对象(如 AstrBotMessageEvent),其中包含 AstrBotMessage, MessageSession 等核心对象,用以描述消息的来源、内容、发送者等信息。

2. 黑盒语音 (Heychat) 机器人 API 规范分析

通过分析其 GitHub 文档库,我们可以总结出其接口的关键信息:
  • 接收消息:
    • 方式: 使用 WebSocket。机器人需要连接到黑盒语音提供的 WebSocket Gateway 地址。
    • 认证: 连接时需要在 URL 中附带机器人的 token
    • 数据格式: WebSocket 上接收到的事件是 JSON 格式的数据。我们需要关注“消息创建”这类事件,并解析其中的关键字段,例如 channel_id (频道ID), author_id (发送者ID), content (消息内容), msg_id (消息ID)等。
  • 发送消息:
    • 方式: 使用 HTTP POST 请求。
    • 接口地址: 文档中会提供一个消息发送的 API Endpoint。
    • 认证: HTTP 请求头 (Header) 中需要包含 Authorization: Bot {token} 来进行身份验证。
    • 数据格式: 请求体 (Body) 是 JSON 格式,通常包含 content (消息内容) 和 msg_id (可选,用于引用回复) 等字段。

第二步:编写适配器代码

现在,结合双方的规范,我们来编写适配器代码。将以下内容保存为 heychat_adapter.py 文件。
注意:此代码是一个基于公开文档和通用机器人框架惯例的模板。实际的 API 端点、WebSocket 事件结构和字段名,需要以黑盒语音的最终官方文档为准。

第三步:将代码转换为插件并安装

AstrBot 的插件机制非常灵活,将我们写好的适配器封装成插件非常简单。

1. 创建插件目录结构

在你的 AstrBot 项目的 data/plugins/ 目录下,创建一个新的文件夹来存放你的插件,例如 astrlbot_plugin_heychat。最终目录结构如下:
  • __init__.py: 内容为空即可,它的存在是为了让 Python 将该目录识别为一个包。
  • heychat_adapter.py: 粘贴第二步中的完整代码到此文件。
  • requirements.txt: (重要) 用于声明插件依赖。由于代码中使用了 aiohttp 库,你需要在此文件中添加它,内容为:
    • metadata.yaml: (可选但推荐) 用于在 AstrBot 的插件商店中显示信息。内容示例:

      2. 安装与启用

      1. 放置文件: 将如上结构的 astrlbot_plugin_heychat 文件夹完整放入你已经部署好的 AstrBot 的 data/plugins/ 目录下。
      1. 安装依赖并重载:
          • 登录 AstrBot 的 WebUI,进入 “插件管理” 页面。
          • 你应该能看到新添加的 “Heychat Adapter”。点击插件上的“管理”按钮。
          • 首先点击“安装依赖”,AstrBot 会自动安装 requirements.txt 中声明的 aiohttp 库。
          • 安装成功后,再点击“重载插件”或启用插件。
          • 如果无法通过 WebUI 操作,也可以手动在 AstrBot 环境的命令行中执行 pip install -r requirements.txt,然后重启 AstrBot。
      1. 配置适配器:
          • 在 AstrBot 的 WebUI,进入 “设置中心” -> “平台配置” 页面。
          • 点击 “添加新平台” 按钮。
          • 在平台类型下拉菜单中,你应该能找到我们刚刚添加的 “heychat (黑盒语音适配器)”。
          • 选中它,然后在配置中填入你的黑盒语音机器人 token
          • 保存并启用该平台。
      完成以上步骤后,AstrBot 就会加载并运行你的黑盒语音适配器。机器人应该就能在黑盒语音的指定频道里接收和回复消息了。
       
      上一篇
      Game
      下一篇
      The secret life of pet