only52607 / lua-mirai

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

lua语言方面的问题 #40

Closed kjundada closed 3 years ago

kjundada commented 4 years ago

在我写的脚本中,我一直发现一下API一直报错,我写的和文档的一模一样也报错

message:find("xxx")
group:sendMessage("xxxx")

报错

2020-09-22 21:04:35 E/Bot 1654723334: An exception was thrown under a coroutine of Bot
org.luaj.vm2.LuaError: @aio.lua:18 attempt to index ? (a nil value)                                           
        at org.luaj.vm2.LuaValue.error(LuaValue.java:1041)                                                    
        at org.luaj.vm2.LuaValue.indexerror(LuaValue.java:3393)                                               
        at org.luaj.vm2.LuaValue.gettable(LuaValue.java:3301)                                                 
        at org.luaj.vm2.LuaValue.get(LuaValue.java:1136)                                                      
        at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:259)                                               
        at org.luaj.vm2.LuaClosure.onInvoke(LuaClosure.java:178)                                              
        at org.luaj.vm2.LuaClosure.invoke(LuaClosure.java:171)                                                
        at org.luaj.vm2.LuaValue.invoke(LuaValue.java:1789)                                                   
        at com.ooooonly.luakt.LuaValueExKt.invoke(LuaValueEx.kt:96)                                           
        at com.ooooonly.luaMirai.lua.bridge.coreimpl.BotCoreImpl$subscribe$job$1.invokeSuspend(BotCoreImpl.kt:141)                                                                                                          
        at com.ooooonly.luaMirai.lua.bridge.coreimpl.BotCoreImpl$subscribe$job$1.invoke(BotCoreImpl.kt)       
        at net.mamoe.mirai.event.SubscriberKt__SubscriberKt$subscribeAlways$1.invokeSuspend(subscriber.kt:271)
        at net.mamoe.mirai.event.SubscriberKt__SubscriberKt$subscribeAlways$1.invoke(subscriber.kt)           
        at net.mamoe.mirai.event.internal.Handler$onEvent$2.invokeSuspend(InternalEventListeners.kt:89)       
        at net.mamoe.mirai.event.internal.Handler$onEvent$2.invoke(InternalEventListeners.kt)                 
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91)         
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:160)               
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)                                          
        at net.mamoe.mirai.event.internal.Handler.onEvent(InternalEventListeners.kt:89)                       
        at net.mamoe.mirai.event.EventKt.broadcast(Event.kt:248)                                              
        at net.mamoe.mirai.qqandroid.network.QQAndroidBotNetworkHandler.handlePacket(QQAndroidBotNetworkHandler.kt:520)                                                                                                     
        at net.mamoe.mirai.qqandroid.network.QQAndroidBotNetworkHandler$generifiedParsePacket$2.invokeSuspend(QQAndroidBotNetworkHandler.kt:476)                                                                            
        at net.mamoe.mirai.qqandroid.network.QQAndroidBotNetworkHandler$generifiedParsePacket$2.invoke(QQAndroidBotNetworkHandler.kt)                                                                                       
        at net.mamoe.mirai.qqandroid.network.protocol.packet.KnownPacketFactories.handleIncomingPacket$mirai_core_qqandroid(PacketFactory.kt:279)                                                                           
        at net.mamoe.mirai.qqandroid.network.protocol.packet.KnownPacketFactories.parseIncomingPacket(PacketFactory.kt:235)                                                                                                 
        at net.mamoe.mirai.qqandroid.network.QQAndroidBotNetworkHandler.generifiedParsePacket(QQAndroidBotNetworkHandler.kt:467)                                                                                            
        at net.mamoe.mirai.qqandroid.network.QQAndroidBotNetworkHandler.parsePacket(QQAndroidBotNetworkHandler.kt:462)                                                                                                      
        at net.mamoe.mirai.qqandroid.network.QQAndroidBotNetworkHandler$parsePacketAsync$1.invokeSuspend(QQAndroidBotNetworkHandler.kt:445)                                                                                 
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)             
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)                                        
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)              
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)     
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)       
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665) 

请问是有新写法了吗,如果是有,请更新文档 (PS. 可不可以出一份友好一点的文档?没有实例和构建方式就不知道应该怎么构建message函数) 万分感谢 aio.zip

only52607 commented 4 years ago

group和message对象都是在event内的,需要用event.group的方式作用,在项目demos文件夹下可以找到示例。

kjundada commented 4 years ago

有没有什么办法不能让群组里某一个热触发指令呢(群组里总是有一个人滥用

only52607 commented 4 years ago

有没有什么办法不能让群组里某一个热触发指令呢(群组里总是有一个人滥用

判断event的sender成员的id,如: if event.sender.id == 123456789 then