🦠对接 Mirai

Mirai 协议是我们最初支持的协议。

我们支持 反向 Websocket 连接正向 Websocket + HTTP 连接两种方式通过 Mirai 接入 QQ。

反向 Websocket 连接时的设置

如果你要使用 Mirai 来连接 QQ,那么需要你在配置文件中这么写:

[mirai]
# Mirai 相关设置

qq = 请填写机器人的 QQ 号

manager_qq = 请修改为机器人管理员的QQ号(你自己的 QQ 号)

# 以下是和 Mirai 连接所需要的相关设置

# 如果你是小白,或者使用我们提供的快速部署方案,可以不用修改这里的设置
# mirai-http-api 中的 verifyKey
api_key = "1234567890"
# mirai api http 反向连接模式
reverse_ws_host = "0.0.0.0"
reverse_ws_port = 8554

在这段配置中,我们使用了 反向 Websocket 连接到 Mirai。

在这个模式下,本程序启动后会等待 Mirai 主动连接到本程序。

这样你就可以把本程序放在云服务器上,而 Mirai 可以放在自己的电脑上,从而避免触发 QQ 的异地登录保护或者掉线问题。

mirai-api-http 中的设置

你需要保证这里的配置和 mirai-api-http 中的设置是一致的,我们的程序才能接入 Mirai。

mirai-api-http 的配置文件存放于 mirai/config/net.mamoe.mirai-api-http,你可以用记事本打开它。

以我们上面的配置为例, mirai-api-http 的配置文件应该改成这样:

adapters:
 - reverse-ws

verifyKey: 1234567890
singleMode: false
cacheSize: 4096
adapterSettings:
  reverse-ws:
    ## 远端 websocket server 地址配置
    destinations:
    - host: localhost
      port: 8554
      path: /
      protocol: ws
      

需要注意的是:

  • verifyKey1234567890 要和上面的 api_key 保持一致

  • port8554 要和上面的 reverse_ws_port 保持一致

  • hostlocalhost 填写本程序的 IP 地址。这取决于你的部署方式,

    如果是 Docker(或者 Linux 一键部署),那你要改成 chatgpt

    如果是 Windows,那就保持现在这样,不需要再改了。

正向 Websocket + HTTP 方式连接

你也可以使用正向 Websocket + HTTP 的方式来连接到 Mirai。

在这个模式下, 本程序启动成功后会主动连接到 Mirai。

如果你要这么做,那就注释掉 reverse_ws开头的两行配置,然后加入另外两行配置,就像这样:

# mirai api http 反向连接模式
# reverse_ws_host = "0.0.0.0"
# reverse_ws_port = 8554
# mirai api http 正向连接模式
# 使用此模式时需注释上面的反向连接模式配置
http_url = "http://localhost:8080"
ws_url = "http://localhost:8080"

此处的 localhost 是 Mirai 程序的 IP 地址。在 Docker 中,你可以填容器名,在 Windows 同一台机器中,那就填 localhost

通常来说,使用正向连接模式没有什么优点,因此我们觉得你没有必要对这里的配置进行修改。

mirai-api-http 中的设置

adapters:
  - http
  - ws
verifyKey: 1234567890
singleMode: false
cacheSize: 4096
persistenceFactory: 'built-in'
adapterSettings:
  ## HTTP 服务的主机, 端口和跨域设置
  http:
    host: "0.0.0.0"
    port: 8080
    cors: ["*"]

  ## Websocket 服务的主机, 端口和事件同步ID设置
  ws:
    host: "0.0.0.0"
    port: 8080
    reservedSyncId: -1

需要注意的是:

  • verifyKey1234567890 要和上面的 api_key 保持一致

  • port8080要和上面的 url 冒号后面的数字保持一致

最后更新于