Skip to content

事件注册表 Registry

在ROB-Milky 3.2.2(尚未发布)后续的版本添加了一项新功能: 搜索事件

你可以通过关键词或主题来搜索对应的事件

kotlin
class TestNativeEventRegistry {
    
    @Test
    fun `test search event registry on native platform`() {
        // 搜索主题为Framework的事件并将其包名输出
        println(MilkyBotFactory.eventRegistry.search(MilkyEventRegistry.Topics.FRAMEWORK).first().type.qualifiedName)
        
        // 或者将其格式化为json
        val index = MilkyBotFactory.eventRegistry.formatToJson()
        println(index)
    }
}

输出的json格式如下

json
{
  "topics": [
    "change",
    "system",
    ...
  ],
  "events": [
    {
      "cls": "cn.rtast.rob.milky.event.milky.BotInstanceCreatedEvent",
      "topics": [
        "system",
        "初始化"
      ],
      "description": "Bot初始化"
    },
    ...
  ]
}

注意事项

如果你在JVM使用此功能无需考虑反射的问题,在KMP中, 你不能使用反射的大部分操作

注1: ROB不使用反射来进行任何操作, 仅将数据类字段类型设置为KClass

注2: 即便获取到了事件数据类的反射类型也无法通过此方法创建一个事件实例, 所有的事件数据类实例均由ROB内部创建

以Apache-2.0开源协议开源