服务器基本的配置已经完成,我们可以使用她来做有趣的事了。

接下来和 Nana 的日常,主要是从“实现项目”这个角度来展开。

所以,我们这次还是祭出我们的传统艺能,QQ Bot.

不过这次要在项目管理方面做好一点,不能再是 if-else 的大杂烩了.

Current Status: 咕了

Dependencies 前期调研

mirai & mirai-api-http

Mirai 是一个在全平台下运行,提供 QQ Android 和 TIM PC 协议支持的高效率机器人框架.

https://github.com/project-mirai/mirai-api-http

下载与设置守护进程

  • 安装 Java 运行时 sudo apt install openjdk-11-jre
  • 下载 MCL,安装 mirai-api-http
  • 登录 Bot(使用 QQ 浏览器验证?使用 QQ 打开链接即可)
    • 如果有需要的话可以安装验证码库
  • 设置为自动登录

  • 配置 supervisor

[program:mcl]
command=/home/ftpuser/5050-mcl/mcl-1.2.2/mcl
autostart=true
autorestart=true
user=root

Brainstorming 项目构思

我们可以考虑采用 websocket 这种 adapter,可以同时处理主动发信和消息上报事件.

graph TB
    subgraph "NanaChat (Daemon)"
        nCore["NanaChat-Core (Port 5051)"]
        nPlugin[NanaChat-Plugins]
    end

    subgraph "Mirai-api-http (Daemon)"
        ws["WebSocket Server (Port 5050)"]
    end

    wa-->|"收信 [1]"|nCore
    nCore -->|"主动发信"| ws
    ws -->|"消息上报"| nCore
    nCore --> nPlugin
    nPlugin --> nCore
graph TD;
ncore[NanaChat-Core]
s[Scheduler
定时事件] d[Dispatcher
消息发送处理] l[Listener
创建 Socket 连接
监听事件] pm[PluginManager
管理插件
协助注册监听器与调度器] ncore --> l ncore --> s ncore --> d ncore --> pm

Docs

Nana-Core

Nana-Plugins

注册 Nana-Core::Listener…

使用 Nana-Core::Dispatcher…