-
Notifications
You must be signed in to change notification settings - Fork 0
Momoon Bot是一个使用TypeScript编写的聊天机器人后端,它包含以下主要部分(后跟随它在源代码中的类名):
- 主线程(主要Node.js运行时实例。这指项目运行的线程,并不是类)
- 启动器(
Launcher
) - 配置(
Config
) - 连接(
Connection
的子类) - 客户端(
Client
的子类) - 插件加载器(
PluginLoader
) - 插件(
Plugin
的子类)
主线程负责运行所有基本架构,即启动器、连接、插件加载器、插件(未来可能将使用worker_threads
库,实现插件多线程)。
当在命令行使用诸如以下命令时:
node ./index.js
项目将通过根目录下的index.js
文件,调用src/app.js
中的start
函数,来进行启动。
在启动函数中,将会创建启动器对象,同时调用Launcher.start
函数。此时,启动器对象将读取配置文件(在config.js
中直接导入JSON文件)。
在对配置文件经过检验后,若检验失败,则给出粗略的错误位置;
若正确,将使用配置文件,尝试创建对应的连接对象,连接对象将被调用Comnection.createServer
函数创建服务器(例如HTTP、被动WebSocket),或被调用Connection.connect
函数连接服务器(例如主动WebSocket)。连接对象将准备好事件接收与事件解析。
插件加载器的加载函数为异步函数,它将与创建连接的过程异步执行。启动器将创建插件加载器对象,并首先调用PluginLoader.loadFromFolder
,加载默认插件文件夹(位于src/plugins/
),然后再加载配置文件中所指定的插件文件和文件夹。
通过导入插件原型,将创建插件对象,其被附加到PluginLoader.plugins
数组中。同时,向插件的事件发射器发射emit
事件。
接下来,将开始等待客户端连接。
注意:以下所称的“客户端”,均指 以OpenShamrock无头客户端作为示例。
当客户端连接时,会为其创建客户端对象,并将其附加到连接对象的Connection.clients
数组中。所有客户端对象将在连接关闭后被销毁。
经过令牌验证后,将获取群聊与好友信息。
例外:HTTP连接将只在收到连接时,为其创建客户端对象,且不会销毁任何客户端对象。群聊与好友信息,只会在最初连接时获取1次。
Momoon Bot 维基
所有文档遵循 CC BY-SA 4.0 协议