Closed Miaow233 closed 3 years ago
发现新版本message对象获取有亿点点麻烦
如果只是纯文本的话还要tostring才能匹配到 如旧版api event.message:find("test") 必须写为 tostring(event.message):find("test")否则会报错
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) 正常输出
新版的message已经去除string的原方法,应当把它当做table来处理,或使用tostring转换为mirai码处理。
已修复:v2.0.9
发现新版本message对象获取有亿点点麻烦
如果只是纯文本的话还要tostring才能匹配到 如旧版api
event.message:find("test")
必须写为tostring(event.message):find("test")
否则会报错组合消息还没测试
另: 使用
查看 message 对象内的成员时报错
但是 print(msg) 正常输出