Skip to content

Latest commit

 

History

History
59 lines (37 loc) · 2.31 KB

develop.md

File metadata and controls

59 lines (37 loc) · 2.31 KB

综述

软件会启动多个虚拟机处理数据,一旦相应的虚拟机新建完毕,除非手动重载,不会再重启改虚拟机:

虚拟机名称 启动条件 会处理的事件
main 软件启动、虚拟机重载后 处理启动事件、好友请求、群邀请等无法归属的事件
private 私聊 处理所有私聊消息
各个群号 群消息等 处理所有与群相关的消息、事件
MQTT 收到mqtt事件 收到mqtt事件
tcp 收到tcp消息 收到tcp消息

所有lua虚拟机皆由LuaTask框架进行管理,各自均为单线程运行。分为多个虚拟机是为了提高效率,防止群数量太多,互相阻塞。

每个虚拟机生成后,都会直接运行main.lua。脚本需要在其中注册好需要的事件、定时器任务。

触发事件

触发接口见LuaTask-csharp

基本代码如下:

--lua里注册触发应对事件
sys.tiggerRegister('事件',function(data)
    print('触发',data.xxxxx)
end)
//C#里触发事件
LuaEnv.LuaStates.Run("虚拟机名称", "事件", 触发数据);

所有事件均可在Ws.cs的Events函数找到,并且可以轻松地看出传入lua的数据内容

http的原始接口文档可在onebot-事件查看

http返回的原视json数据原封不动地存放在传给lua数据的raw键下,方便按需调用

主动接口

该部分直接由lua脚本实现

lua脚本构造请求数据,直接通过Http.cs来与http接口进行交互。

http接口文档见onebot-公开API

该部分可翻阅lua脚本,全部逻辑均由lua实现。

CQ码

onebot-消息段类型

调用C#接口

请参考Nlua关于import函数的使用说明

上面描述的主动接口基本都是调用C#接口进行发送。如果还看不懂调用方法,请参考现有Lua脚本依葫芦画瓢。