only52607 / lua-mirai

Mirai机器人的lua扩展支持
https://only52607.github.io/lua-mirai/
GNU Affero General Public License v3.0
126 stars 28 forks source link

message对象 #50

Closed Miaow233 closed 3 years ago

Miaow233 commented 3 years ago

发现新版本message对象获取有亿点点麻烦

如果只是纯文本的话还要tostring才能匹配到 如旧版api event.message:find("test") 必须写为 tostring(event.message):find("test")否则会报错

2021-02-11 02:27:50 W/stderr: org.luaj.vm2.LuaError: @mirai-scripts/events/MessageEvent.lua:37 bad argument: string expected, got table
2021-02-11 02:27:50 W/stderr:   at org.luaj.vm2.LuaValue.argerror(LuaValue.java:1058)
2021-02-11 02:27:50 W/stderr:   at org.luaj.vm2.LuaValue.checkjstring(LuaValue.java:966)
2021-02-11 02:27:50 W/stderr:   at org.luaj.vm2.Varargs.checkjstring(Varargs.java:337)
2021-02-11 02:27:50 W/stderr:   at com.ooooonly.luaMirai.lua.lib.HttpLib$call$$inlined$edit$lambda$1.invoke(LuaFunctionBuilder.kt:87)
2021-02-11 02:27:50 W/stderr:   at com.ooooonly.luaMirai.lua.lib.HttpLib$call$$inlined$edit$lambda$1.invoke(LuaFunctionBuilder.kt)
2021-02-11 02:27:50 W/stderr:   at com.ooooonly.luakt.LuaFunctionBuilderKt$varArgFunctionOf$1.onInvoke(LuaFunctionBuilder.kt:11)
2021-02-11 02:27:50 W/stderr:   at org.luaj.vm2.lib.VarArgFunction.invoke(VarArgFunction.java:77)
2021-02-11 02:27:50 W/stderr:   at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:369)
2021-02-11 02:27:50 W/stderr:   at org.luaj.vm2.LuaClosure.onInvoke(LuaClosure.java:178)
2021-02-11 02:27:50 W/stderr:   at org.luaj.vm2.LuaClosure.invoke(LuaClosure.java:171)
2021-02-11 02:27:50 W/stderr:   at com.ooooonly.luaMirai.lua.lib.mirai.EventLib$subscriber$1$3.invokeSuspend(EventLib.kt:64)
2021-02-11 02:27:50 W/stderr:   at com.ooooonly.luaMirai.lua.lib.mirai.EventLib$subscriber$1$3.invoke(EventLib.kt)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invokeSuspend(EventChannel.kt:431)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invoke(EventChannel.kt)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:145)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.internal.event.Handler$onEvent$2.invokeSuspend(InternalEventListeners.kt:49)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
2021-02-11 02:27:50 W/stderr:   at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91)
2021-02-11 02:27:50 W/stderr:   at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
2021-02-11 02:27:50 W/stderr:   at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.internal.event.Handler.onEvent(InternalEventListeners.kt:49)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.event.EventKt.broadcast(Event.kt:226)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$handlePacket$7.invokeSuspend(QQAndroidBotNetworkHandler.kt:676)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$handlePacket$7.invoke(QQAndroidBotNetworkHandler.kt)
2021-02-11 02:27:50 W/stderr:   at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91)
2021-02-11 02:27:50 W/stderr:   at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
2021-02-11 02:27:50 W/stderr:   at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler.handlePacket(QQAndroidBotNetworkHandler.kt:669)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$generifiedParsePacket$2.invokeSuspend(QQAndroidBotNetworkHandler.kt:626)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$generifiedParsePacket$2.invoke(QQAndroidBotNetworkHandler.kt)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.internal.network.protocol.packet.KnownPacketFactories.handleIncomingPacket$mirai_core(PacketFactory.kt:289)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.internal.network.protocol.packet.KnownPacketFactories.parseIncomingPacket(PacketFactory.kt:245)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler.generifiedParsePacket(QQAndroidBotNetworkHandler.kt:617)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler.parsePacket(QQAndroidBotNetworkHandler.kt:612)
2021-02-11 02:27:50 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$parsePacketAsync$1.invokeSuspend(QQAndroidBotNetworkHandler.kt:594)
2021-02-11 02:27:50 W/stderr:   at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
2021-02-11 02:27:50 W/stderr:   at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
2021-02-11 02:27:50 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
2021-02-11 02:27:50 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
2021-02-11 02:27:50 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
2021-02-11 02:27:50 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

组合消息还没测试

另: 使用

for k,v in pairs(msg.__properties) do
    print(k..":"..tostring(v))
end

查看 message 对象内的成员时报错

2021-02-11 02:17:08 W/stderr: org.luaj.vm2.LuaError: @mirai-scripts/events/MessageEvent.lua:36 bad argument: table expected, got nil
2021-02-11 02:17:08 W/stderr:   at org.luaj.vm2.LuaValue.argerror(LuaValue.java:1058)
2021-02-11 02:17:08 W/stderr:   at org.luaj.vm2.LuaValue.checktable(LuaValue.java:991)
2021-02-11 02:17:08 W/stderr:   at org.luaj.vm2.Varargs.checktable(Varargs.java:351)
2021-02-11 02:17:08 W/stderr:   at org.luaj.vm2.lib.BaseLib$pairs.invoke(BaseLib.java:402)
2021-02-11 02:17:08 W/stderr:   at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:369)
2021-02-11 02:17:08 W/stderr:   at org.luaj.vm2.LuaClosure.onInvoke(LuaClosure.java:178)
2021-02-11 02:17:08 W/stderr:   at org.luaj.vm2.LuaClosure.invoke(LuaClosure.java:171)
2021-02-11 02:17:08 W/stderr:   at com.ooooonly.luaMirai.lua.lib.mirai.EventLib$subscriber$1$3.invokeSuspend(EventLib.kt:64)
2021-02-11 02:17:08 W/stderr:   at com.ooooonly.luaMirai.lua.lib.mirai.EventLib$subscriber$1$3.invoke(EventLib.kt)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invokeSuspend(EventChannel.kt:431)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invoke(EventChannel.kt)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:145)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.internal.event.Handler$onEvent$2.invokeSuspend(InternalEventListeners.kt:49)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
2021-02-11 02:17:08 W/stderr:   at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91)
2021-02-11 02:17:08 W/stderr:   at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
2021-02-11 02:17:08 W/stderr:   at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.internal.event.Handler.onEvent(InternalEventListeners.kt:49)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.event.EventKt.broadcast(Event.kt:226)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$handlePacket$7.invokeSuspend(QQAndroidBotNetworkHandler.kt:676)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$handlePacket$7.invoke(QQAndroidBotNetworkHandler.kt)
2021-02-11 02:17:08 W/stderr:   at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91)
2021-02-11 02:17:08 W/stderr:   at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
2021-02-11 02:17:08 W/stderr:   at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler.handlePacket(QQAndroidBotNetworkHandler.kt:669)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$generifiedParsePacket$2.invokeSuspend(QQAndroidBotNetworkHandler.kt:626)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$generifiedParsePacket$2.invoke(QQAndroidBotNetworkHandler.kt)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.internal.network.protocol.packet.KnownPacketFactories.handleIncomingPacket$mirai_core(PacketFactory.kt:289)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.internal.network.protocol.packet.KnownPacketFactories.parseIncomingPacket(PacketFactory.kt:245)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler.generifiedParsePacket(QQAndroidBotNetworkHandler.kt:617)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler.parsePacket(QQAndroidBotNetworkHandler.kt:612)
2021-02-11 02:17:08 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$parsePacketAsync$1.invokeSuspend(QQAndroidBotNetworkHandler.kt:594)
2021-02-11 02:17:08 W/stderr:   at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
2021-02-11 02:17:08 W/stderr:   at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
2021-02-11 02:17:08 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
2021-02-11 02:17:08 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
2021-02-11 02:17:08 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
2021-02-11 02:17:08 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

但是 print(msg) 正常输出

only52607 commented 3 years ago

新版的message已经去除string的原方法,应当把它当做table来处理,或使用tostring转换为mirai码处理。

only52607 commented 3 years ago

已修复:v2.0.9