GithubHelp home page GithubHelp logo

only52607 / lua-mirai Goto Github PK

View Code? Open in Web Editor NEW
126.0 3.0 28.0 7.03 MB

Mirai机器人的lua扩展支持

Home Page: https://only52607.github.io/lua-mirai/

License: GNU Affero General Public License v3.0

Kotlin 92.06% Lua 4.71% TypeScript 1.54% Java 1.68%
bot lua mirai robot java kotlin mirai-lua

lua-mirai's Introduction

lua-mirai

LICENSE QQ Group

支持lua语言的qq bot快速开发框架,使用lua轻松创造qq bot。

开发文档

lua mirai doc

更新日志

CHANGE LOG

Android

LuaMiraiForAndroid 是lua-mirai在Android端的运行方案,具有高度可操作性,提供了强大的多Bot管理及构建参数完全控制和脚本可视化管理功能,强烈建议使用LuaMiraiForAndroid 作为Android端的运行环境。

Licenses

GNU AGPLv3

本项目仅供学习参考,禁止用于任何商业用途。任何单位或个人认为本项目可能涉嫌侵犯其合法权益,应该及时提出反馈,我们将会第一时间对违规内容给予删除等相关处理。

lua-mirai's People

Contributors

brynne8 avatar dependabot[bot] avatar only52607 avatar qzwxsaedc avatar thebadzhang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

lua-mirai's Issues

Message 对象 toTable 转换失败

一个 Message 对象不能正常使用 toTable 转换成 table,报错

vm error: org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]

遍历event.message并处理MessageChain内的元素时抛出"xxx is not a MessageChain."

比如我想提取消息中的图片url:

for i, v in ipairs(event.message) do
        str_msg = tostring(v)
        if str_msg:find(":image:") then
            local url = v.queryUrl
            print("url: " .. url)
  end
end

如果有图片的话,会抛出异常:

org.luaj.vm2.LuaError: x:/script/path/file_name.lua:line [mirai:image:{01E9451B-70ED-EAE3-B37C-101F1EEBF5B5}.ext] is not a MessageChain.
        at com.ooooonly.luaMirai.lua.lib.mirai.LuaMiraiMessage.getMessageElement(LuaMiraiMessage.kt:34)
        at com.ooooonly.luaMirai.lua.lib.mirai.LuaMiraiMessage.get(LuaMiraiMessage.kt:39)
        at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:240)
        at org.luaj.vm2.LuaClosure.onInvoke(LuaClosure.java:178)
        at org.luaj.vm2.LuaClosure.invoke(LuaClosure.java:171)
        at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:369)
        at org.luaj.vm2.LuaClosure.onInvoke(LuaClosure.java:178)
        at org.luaj.vm2.LuaClosure.invoke(LuaClosure.java:171)
        at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:369)
        at org.luaj.vm2.LuaClosure.onInvoke(LuaClosure.java:178)
        at org.luaj.vm2.LuaClosure.invoke(LuaClosure.java:171)
        at com.ooooonly.luaMirai.lua.lib.mirai.EventLib$subscriber$1$3.invokeSuspend(EventLib.kt:64)
        at com.ooooonly.luaMirai.lua.lib.mirai.EventLib$subscriber$1$3.invoke(EventLib.kt)
...

消息无法触发chat-command以及监听问题

你好!发现2个bug:

1.在lma上 对于Event的方法cancel()没有效果 。这个身边没电脑暂时不能测试mcl上的效果,目前只在安卓上测试无效。

2.电脑上mcl最新版mirai上开启chat-command,lua-mirai部分命令无法在聊天中正确识别格式。如/lua source list 这样会提示参数错误。其他插件正常

作为console插件使用时自动导入脚本

启动时自动导入&启用脚本

两种思路:

  1. 在config目录下创建配置文件,记录脚本路径及启用状态

setting.yml

scripts:
  -
     path: /home/mirai/test1.lua
     enable: true
  -
     path: /home/mirai/test2.lua
     enable: false
  1. 仿照 miraiAndroid 的脚本导入功能,在 data/com.ooooonly.luaMirai/ 目录下创建脚本文件夹,自动导入文件夹内所有文件
.
├── bots
├── config
│   ├── com.ooooonly.luaMirai
│   │   └── setting.yml
│   ├── Console
│   │   ├── Command.yml
│   │   └── PermissionService.yml
│   └── net.mamoe.mirai-api-http
│       └── setting.yml
├── data
│   ├── com.ooooonly.luaMirai
│   │   ├── data
│   │   └── scripts
│   └── net.mamoe.mirai-api-http
│       ├── images
│       └── voices

subscribeMemberJoinEvent的响应问题

subscribeMemberJoinEvent这个订阅事件不会自动销毁吗? 这是脚本重载三次的结果

也就是说同一事件会触发多次
貌似只有这一个会这样

关于WEB的问题

执行web时,无法创建config.json
手动创建之后会有错误
`9月 20, 2020 10:18:40 上午 io.vertx.core.impl.BlockedThreadChecker
警告: Thread Thread[vert.x-eventloop-thread-0,5,main]=Thread[vert.x-eventloop-thread-0,5,main] has been blocked for 2190 ms, time limit is 2000 ms
9月 20, 2020 10:18:41 上午 io.vertx.core.impl.BlockedThreadChecker
警告: Thread Thread[vert.x-eventloop-thread-0,5,main]=Thread[vert.x-eventloop-thread-0,5,main] has been blocked for 3191 ms, time limit is 2000 ms
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.ooooonly.luaMirai.frontend.web.Config$Deploy.getPORT(Config.kt:44)
at com.ooooonly.luaMirai.frontend.web.verticals.LuaMiraiVertical.start(LuaMiraiVertical.kt:89)
at io.vertx.kotlin.coroutines.CoroutineVerticle$start$1.invokeSuspend(CoroutineVerticle.kt:53)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
at io.vertx.kotlin.coroutines.VertxCoroutineExecutor.execute(VertxCoroutine.kt:214)
at kotlinx.coroutines.ExecutorCoroutineDispatcherBase.dispatch(Executors.kt:82)
at kotlinx.coroutines.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:288)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:26)
at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:109)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:158)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:49)
at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source)
at io.vertx.kotlin.coroutines.CoroutineVerticle.start(CoroutineVerticle.kt:51)
at io.vertx.core.Verticle.start(Verticle.java:66)
at io.vertx.core.impl.DeploymentManager.lambda$doDeploy$9(DeploymentManager.java:556)
at io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:366)
at io.vertx.core.impl.EventLoopContext.lambda$executeAsync$0(EventLoopContext.java:38)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: io.vertx.core.json.DecodeException: Failed to decode:No content to map due to end-of-input
at [Source: (String)""; line: 1, column: 0]
at io.vertx.core.json.jackson.JacksonCodec.fromParser(JacksonCodec.java:100)
at io.vertx.core.json.jackson.JacksonCodec.fromString(JacksonCodec.java:58)
at io.vertx.core.json.JsonObject.fromJson(JsonObject.java:999)
at io.vertx.core.json.JsonObject.(JsonObject.java:54)
at com.ooooonly.luaMirai.frontend.web.Config.(Config.kt:65)
... 27 more
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
at [Source: (String)""; line: 1, column: 0]
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4344)
at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:4160)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2467)
at io.vertx.core.json.jackson.JacksonCodec.fromParser(JacksonCodec.java:97)
... 31 more

`
也无法打开管理界面

使用.13/.14版本作为mirai console插件使用时 load 命令出现空指针异常

管理员权限 win server .12及之前版本未测试

报错信息如下:

/lua load ai.lua
2021-08-08 10:46:24 E/lua-mirai: load C:\bot\mcl-1.2.2\ai.lua: org.luaj.vm2.LuaError: load @C:\bot\mcl-1.2.2\ai.lua: java.lang.NullPointerException: Cannot invoke "java.io.InputStream.markSupported()" because "is" is null

疑似 is.mardSupported() 方法时 is 为null对象

Json转table的问题

我所写的代码

bot:subscribe(
	"GroupMessageEvent",function(event)        
		if event.message:find("/pii")  then
			pii_jtt = {}
			pii_value1 = event.message:gsub("/pii","")
			pii_value = pii_value1:gsub(" ","")
			pii_json = ("https://kspixivapi.herokuapp.com/v1/illust/detail/" .. pii_value)
			pii_get_json = Http.get(pii_json)
			pii_jtt = Json.parseJson(pii_get_json)
			pii_title = pii_jtt["title"]
      		pii_painter = pii_jtt["user"]["name"]
			pii_id = pii_jtt["id"]
			--pii_create_date = pii_jtt["create_date"]
			pii_o_pic = pii_jtt["meta_single_page"]["original_image_url"]
			pii_pic = pii_o_pic:gsub("i.pximg.net","i.pixiv.cat")
      		--pii_pic = ([["]] .. pii_pic_1 .. [["]])
			event.group:sendMessage( ImageUrl(pii_pic,group) .. "名称:" .. pii_title .. "," .. "画师名称:" .. pii_painter .. "," .. "图画ID:" .. pii_id) --这行报错
    end
  end)

但是会报错,错误log如下:

2020-10-22 20:42:25 E/Bot 1654723334: An exception was thrown under a coroutine of Bot
org.luaj.vm2.LuaError: @aio.lua:133 vm error: java.lang.Exception: Could not convert LuaValue to Any!

Quote方法无效

Quote方法无效,控制台有mirai码输出
lua-mirai版本:2.0.5
使用 event.group:sendMessage(Quote(event.message) .. "233")
IMG_20210216_182148
IMG_20210216_181927

撤回消息 无法使用

event.message.MessageSource:recall()
报下列错误
org.luaj.vm2.LuaError: @/data/luabot/ai.lua:11 attempt to call nil
at org.luaj.vm2.LuaValue.checkmetatag(LuaValue.java:3365)
at org.luaj.vm2.LuaValue.callmt(LuaValue.java:1997)
at org.luaj.vm2.LuaValue.call(LuaValue.java:1450)
at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:359)
at org.luaj.vm2.LuaClosure.onInvoke(LuaClosure.java:178)
at org.luaj.vm2.LuaClosure.invoke(LuaClosure.java:171)
at com.ooooonly.luaMirai.lua.lib.mirai.EventLib$subscriber$1$3.invokeSuspend(EventLib.kt:69)
at com.ooooonly.luaMirai.lua.lib.mirai.EventLib$subscriber$1$3.invoke(EventLib.kt)
at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invokeSuspend(EventChannel.kt:431)
at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invoke(EventChannel.kt)
at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:145)
at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
at net.mamoe.mirai.internal.event.Handler$onEvent$2.invokeSuspend(InternalEventListeners.kt:49)
at net.mamoe.mirai.internal.event.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:165)
at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
at net.mamoe.mirai.internal.event.Handler.onEvent(InternalEventListeners.kt:49)
at net.mamoe.mirai.event.EventKt.broadcast(Event.kt:226)
at net.mamoe.mirai.internal.network.handler.QQAndroidBotNetworkHandler$handlePacket$7.invokeSuspend(QQAndroidBotNetworkHandler.kt:655)
at net.mamoe.mirai.internal.network.handler.QQAndroidBotNetworkHandler$handlePacket$7.invoke(QQAndroidBotNetworkHandler.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
at net.mamoe.mirai.internal.network.handler.QQAndroidBotNetworkHandler.handlePacket(QQAndroidBotNetworkHandler.kt:648)
at net.mamoe.mirai.internal.network.handler.QQAndroidBotNetworkHandler$generifiedParsePacket$2.invokeSuspend(QQAndroidBotNetworkHandler.kt:602)
at net.mamoe.mirai.internal.network.handler.QQAndroidBotNetworkHandler$generifiedParsePacket$2.invoke(QQAndroidBotNetworkHandler.kt)
at net.mamoe.mirai.internal.network.protocol.packet.KnownPacketFactories.handleIncomingPacket$mirai_core(PacketFactory.kt:291)
at net.mamoe.mirai.internal.network.protocol.packet.KnownPacketFactories.parseIncomingPacket(PacketFactory.kt:247)
at net.mamoe.mirai.internal.network.handler.QQAndroidBotNetworkHandler.generifiedParsePacket(QQAndroidBotNetworkHandler.kt:593)
at net.mamoe.mirai.internal.network.handler.QQAndroidBotNetworkHandler.parsePacket(QQAndroidBotNetworkHandler.kt:588)
at net.mamoe.mirai.internal.network.handler.QQAndroidBotNetworkHandler$parsePacketAsync$1.invokeSuspend(QQAndroidBotNetworkHandler.kt:570)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

解析json的问题

在使用中,我想解析一段json,我使用了文档中的json支持库中的函数,代码片段如下:
local a =232313 local msg = Http.get("http://api.qingyunke.com/api.php?key=free&appid=0&msg=" ..a) local t = Json.parseJson(msg) local status = t["content"] group:sendMessgae(status)
显示最后一行请求了nil,也尝试过将status给tostring但仍然出错,不知该如何结果

还有就是这里支持cjson嘛

message对象

发现新版本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) 正常输出

没有在群内被at的事件

既然有戳一戳的事件,我本以为是有被@的事件的,结果发现并没有
虽然可以用其他方法来替代,但是总归没有那么方面
后续有没有可能加上这个事件呢

获取及构造bot对象相关

1 按照文档使用
image
每次构造bot对象均需验证设备
2 考虑到登陆后本地未检索到device.json文件
分别尝试传入使用带有\和/的绝对路径 如"D:\\material\\mirai\\device.json"
依旧image
3 传入带有fileBasedDeviceInfo成员的table 依旧如此

  • 同时注意到 登陆后未获取到群聊消息 onLoad(bot)会红字显示nil
  • 尝试使用脚本创建文件 成功

4 尝试使用console登录 登录成功并获取到对应device.json
在脚本中构造bot对象依旧需要验证
5 尝试在脚本中遍历bot对象
image
输出如下
image

lua-mirai版本为2.0.2
console和core版本为2.4

问题

miraiAndroid上怎么用卡片呀?

image()发送本地图片问题

请问该如何用image()发送手机内置存储中的图片?我尝试过图片uri和绝对路径都不行,只能用termux建立局域网服务器曲线救国…

Http问题

使用示例脚本

Event.subscribe("GroupMessageEvent", function(event)
    local group = event.group
    local msg = event.message
    if tostring(msg) == "一言" then
        group:sendMessage(Http.get("https://v1.hitokoto.cn/?encode=text"))
    end
end)

报错如下

2021-02-11 02:33:16 W/stderr: org.luaj.vm2.LuaError: @mirai-scripts/events/MessageEvent.lua:38 vm error: com.ooooonly.luakt.mapper.userdata.ParameterNotMatchException: 2 overload function has been tried as follow,but failed to match the corresponding overloaded function.Please check for incorrect use '.' Operator instead of ':' operator.
2021-02-11 02:33:16 W/stderr:  sendMessage(null:GroupImpl,message:Message) Parameter not match:argument type mismatch
2021-02-11 02:33:16 W/stderr: sendMessage(null:GroupImpl,message:String) Parameter not match:argument type mismatch
2021-02-11 02:33:16 W/stderr:
2021-02-11 02:33:16 W/stderr:   at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:506)
2021-02-11 02:33:16 W/stderr:   at org.luaj.vm2.LuaClosure.onInvoke(LuaClosure.java:178)
2021-02-11 02:33:16 W/stderr:   at org.luaj.vm2.LuaClosure.invoke(LuaClosure.java:171)
2021-02-11 02:33:16 W/stderr:   at com.ooooonly.luaMirai.lua.lib.mirai.EventLib$subscriber$1$3.invokeSuspend(EventLib.kt:64)
2021-02-11 02:33:16 W/stderr:   at com.ooooonly.luaMirai.lua.lib.mirai.EventLib$subscriber$1$3.invoke(EventLib.kt)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invokeSuspend(EventChannel.kt:431)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invoke(EventChannel.kt)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:145)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.internal.event.Handler$onEvent$2.invokeSuspend(InternalEventListeners.kt:49)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
2021-02-11 02:33:16 W/stderr:   at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91)
2021-02-11 02:33:16 W/stderr:   at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
2021-02-11 02:33:16 W/stderr:   at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.internal.event.Handler.onEvent(InternalEventListeners.kt:49)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.event.EventKt.broadcast(Event.kt:226)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$handlePacket$7.invokeSuspend(QQAndroidBotNetworkHandler.kt:676)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$handlePacket$7.invoke(QQAndroidBotNetworkHandler.kt)
2021-02-11 02:33:16 W/stderr:   at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91)
2021-02-11 02:33:16 W/stderr:   at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
2021-02-11 02:33:16 W/stderr:   at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler.handlePacket(QQAndroidBotNetworkHandler.kt:669)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$generifiedParsePacket$2.invokeSuspend(QQAndroidBotNetworkHandler.kt:626)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$generifiedParsePacket$2.invoke(QQAndroidBotNetworkHandler.kt)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.internal.network.protocol.packet.KnownPacketFactories.handleIncomingPacket$mirai_core(PacketFactory.kt:289)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.internal.network.protocol.packet.KnownPacketFactories.parseIncomingPacket(PacketFactory.kt:245)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler.generifiedParsePacket(QQAndroidBotNetworkHandler.kt:617)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler.parsePacket(QQAndroidBotNetworkHandler.kt:612)
2021-02-11 02:33:16 W/stderr:   at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$parsePacketAsync$1.invokeSuspend(QQAndroidBotNetworkHandler.kt:594)
2021-02-11 02:33:16 W/stderr:   at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
2021-02-11 02:33:16 W/stderr:   at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
2021-02-11 02:33:16 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
2021-02-11 02:33:16 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
2021-02-11 02:33:16 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
2021-02-11 02:33:16 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
2021-02-11 02:33:16 W/stderr: Caused by: com.ooooonly.luakt.mapper.userdata.ParameterNotMatchException: 2 overload function has been tried as follow,but failed to match the corresponding overloaded function.Please check for incorrect use '.' Operator instead of ':' operator.
2021-02-11 02:33:16 W/stderr:  sendMessage(null:GroupImpl,message:Message) Parameter not match:argument type mismatch
2021-02-11 02:33:16 W/stderr: sendMessage(null:GroupImpl,message:String) Parameter not match:argument type mismatch
2021-02-11 02:33:16 W/stderr:
2021-02-11 02:33:16 W/stderr:   at com.ooooonly.luakt.mapper.userdata.KotlinOverloadFunctionWrapper.onInvoke(KotlinOverloadFunctionWrapper.kt:29)
2021-02-11 02:33:16 W/stderr:   at org.luaj.vm2.lib.VarArgFunction.invoke(VarArgFunction.java:77)
2021-02-11 02:33:16 W/stderr:   at org.luaj.vm2.lib.VarArgFunction.call(VarArgFunction.java:62)
2021-02-11 02:33:16 W/stderr:   at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:360)
2021-02-11 02:33:16 W/stderr:   ... 34 more

以及body,isSuccessful,code,message= Http.get(URL)
body类型为ArrayVarargs
而且type(Http.get(URL))也是ArrayVarargs

启动时提示“未知的运行参数”

环境

  • CentOS 7.8.2003 (Core)
  • openjdk 1.8.0_272
  • OpenJDK Runtime Environment (build 1.8.0_272-b10)
  • OpenJDK 64-Bit Server VM (build 25.272-b10, mixed mode)
  • Lua-Mirai v1.3.0

问题

[root@host5979f72101 bot]# java -jar lua-mirai.jar web
Exception in thread "main" java.lang.Exception: 未知的运行参数!
        at com.ooooonly.luaMirai.MainKt.main(main.kt:16)
        at com.ooooonly.luaMirai.MainKt$$$main.invoke(Unknown Source)
        at kotlin.coroutines.intrinsics.IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$1.invokeSuspend(IntrinsicsJvm.kt:205)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:115)
        at kotlin.coroutines.jvm.internal.RunSuspendKt.runSuspend(RunSuspend.kt:19)
        at com.ooooonly.luaMirai.MainKt.main(main.kt)

另外该如何指定 lua-mirai 的运行端口?

相同的代码在不同文件名的lua中不工作

如题,我首先创建了一个文件名为bv_to_av.lua的文件,源码为以脚本中心中的bv转av为模板的小改版本(如图),
image

然后load,一切正常,如图
image

然后删除此脚本,load另一个源码一模一样的脚本(barbarian.lua),不正常工作,如图
image

对这个现象感到疑惑,想问一下这个是bug吗

转发消息 的Bug

在文档里面写到

Forward { -- 可省略括号
	title = "群聊的聊天记录",
    brief = "[聊天记录]",
    source = "聊天记录",
    preview = { 
        "消息概览1",
        "消息概览2"
    }, -- 可省略
    summary = "查看 1 条转发消息" -- 可省略,
    content = {
        {
            senderId = 123456789, -- 发送者 qq 号
            time = 987654, -- 发送的时间戳
            senderName = "发送者昵称1",
            message = Message("消息1") .. Face(0) -- 显示的消息内容
        },
        {
            senderId = 123456789, 
            time = 987654,
            senderName = "发送者昵称2",
            message = Message("消息2") .. Face(0) -- 显示的消息内容
        },
    }
}

会报错

2020-11-03 13:27:06 E/Bot 1654723334: An exception was thrown under a coroutine of Bot
org.luaj.vm2.LuaError: @aio.lua:339 attempt to call nil

如果按照event.group:sendMessage()则会报错

2020-11-03 18:56:57 E/Bot 1654723334: An exception was thrown under a coroutine of Bot
org.luaj.vm2.LuaError: @aio.lua:327 vm error: java.lang.IllegalArgumentException: Forward nodeList mustn't be empty

请修复这个bug并更新文档,TKS

onLoad(bot)

function onLoad(bot)
	print("载入AIO bot"..bot.getId().."成功")

	_aks = "737780365f656c04b4c405"    --请在""中输入apikey
	_apikey = "32d97878cf0e765e1e9d382a3b30b08e3f7b460d"
	
	master = {1240188105}        --请改为你的QQ,多管理员用,隔开

	bot:subscribeGroupMsg(
		"GroupMessageEvent",function(event)
			if event.message:find("/help") then
				group:sendMsg("/p站搜图 - 以文字在P站搜索图片,但无法过滤R18 \n/一言 - 获取一言\n/二次元 - 获取二次元图片\n/menhera - 获取menhera图片\n/涩图 - 获取一张随机的涩图\n/st+关键字 - 搜索一张涩图\n/网抑云 - 获取网抑云语录\n/壁纸 - 获取一张壁纸\n/以图搜图 - 以一张图片获取一张图片")
			end
		end)

--p站搜图
	bot:subscribeGroupMsg(
		"GroupMessageEvent",function(event)
			if event.message:find("/p站搜图") then
				group:sendMsg("正在搜索")
				api_value = msg.gsub("/p站搜图","")
				api_value = api_value.gsub(" ","")
				
				function Table_Rand(t)
					if t == nil then
						return
					end
					local tRet = {}
					local Total = #t
					while Total > 0 do
						local i = math.random(1,Total)
						table.insert(tRet,t[i])
						t[i] = t[Total]
						Total = Total -1
					end

					return tRet

				end
				
				local urls = {}	
				local count = 0
				
				while true do
					count = count+1
					api_json = ("https.//api.imjad.cn/pixiv/v2/?type=search&word=" .. api_value .. "&page=" ..count)
					html = net.get(api_json)
					if html.find('next_url".null') then
						break
					end
					
					for i in html.gmatch('"original_image_url"."(.-)"') do
						url1 = i.gsub("\\","")
						url = url1.gsub("i.pximg.net","i.pixiv.cat")
						table.insert(urls,url)
					end
					
					if count>10 then
						break
					end
				
				end
				
				group:sendMsg("解析完成")
				
				local list = Table_Rand(urls)
				local x = 0
				
				for j,k in pairs(list) do
					if x>5 then
						break
					end
					x = x+1
					group:sendMsg(FlashImage(Image(k,group)))
					
				end
				
			end
		end)

--一言
	bot:subscribeGroupMsg(
		"GroupMessageEvent",function(event)        
			if event.message:find("/一言")  then
				group:sendMsg( Msg().setQuote(msg)+"你要的一言来了.\n"+net.get("https.//api.ixiaowai.cn/ylapi/index.php"))
			end
		end)

--回复
	bot:subscribeGroupMsg(
		"GroupMessageEvent",function(event)        
			if event.message:find("中二")  then
				group:sendMsg(Msg().setQuote(msg)+"吾乃赤电魔教之教主,吾即是真理。\n来吧!吾等赤众们啊!\n今晚是嗜血之夜,血红之月乃我们前进的指标。\n吾封印之右手,觉醒吧!破坏吧!\n吞噬吾之敌人!欧 洲 之 魔 手!!!(学miru讲话")
			end
		end)

	bot:subscribeGroupMsg(
		"GroupMessageEvent",function(event)        
			if event.message:find("夸我")  then
				group:sendMsg(Msg().setQuote(msg)+net.get("https.//chp.shadiao.app/api.php"))
			end
		end)

			bot:subscribe("GroupMessageEvent",function(event)
				if event.message == "骂我" then
					event.group:sendMessage(Quote(msg) + At(sender) + Http.get("https://nmsl.shadiao.app/api.php?level=min&lang=zh_cn"))
		
				elseif event.message:find("骂他") then
					local at
					for k, v in pairs(event.message:toTable()) do
						if v:find("mirai:at") then
							at = v
							break
						end
					end
					event.group:sendMessage(at .. Http.get("https://nmsl.shadiao.app/api.php?lang=zh_cn"))
				end
			end)

--二次元
	bot:subscribeGroupMsg(
		"GroupMessageEvent",function(event)
			if event.message:find("/二次元") then
				local erciyuan = ("https.//api.ixiaowai.cn/api/api.php")
				group:sendMsg(Msg().setQuote(msg)+Msg().appendImage(erciyuan, group) )
			end
		end)
--menhare
	bot:subscribeGroupMsg(
		"GroupMessageEvent",function(event)
			if event.message:find("/menhera") then
				local menhera = ("https.//api.ixiaowai.cn/mcapi/mcapi.php")
				group:sendMsg(Msg().appendImage(menhera, group) )
			end
		end)
--涩图
    bot:subscribeGroupMsg("GroupMessageEvent",function(event)
        if event.message:find("/涩图") then
            group:sendMsg(FlashImage(Image(Net.get("https.//api.lolicon.app/setu/").match('"url"."(.-)"').gsub("\\", ""), group)))
        end
    end)
--搜索涩图
    _r18 = 0
    bot:subscribeGroupMsg("GroupMessageEvent",function(event)

		if event.message:find("/开启r18") then
			
			function isInArray(t, val)
				for _, v in ipairs(t) do
					if v == val then
						return true
					end
				end
				return false
			end
			
			local TF = isInArray(master,sender.id)
			
			
			
			if TF == true then
				_r18 = 1
				group:sendMsg("r18开启成功")
			else
				group:sendMsg("请联系bot主人授权")
			end
		end
		
		if event.message:find("/关闭r18") then
			_r18 = 0
			group:sendMsg("r18已关闭")
		end
		
        if event.message:find("/st") then
			group:sendMsg(FlashImage(Image("/096708CE-21F8-3AAD-B8E5-2223D679DAE4",group)))
			api_value = msg.gsub("/st","")
			if api_value.find(" ",-3)==nil then
				api_value = api_value .. " 1"
			end
			api_num = api_value.match("%d",-2)
			api_value = api_value.sub(1,-3)
			if api_value == nil then
				api_value = ''
			end
			if api_num == nil then
				api_num = 1
			end
			api_json = ("https.//api.lolicon.app/setu/?apikey=" .. _aks .. "&r18=" .. _r18 .. "&num=" .. api_num .."&keyword=" ..api_value)
            html = net.get(api_json)
			
			if html.find("没有符合条件的色图") then
				group:sendMsg("没有符合条件的色图")
			end
			--local m = Msg()
			for i in html.gmatch('"url"."(.-)"') do
				url = i.gsub("\\","")
				--m = m+Image(url,group)
				group:sendMsg(Image(url,group))   --一次发一张
			end
			--group.sendgroup:sendMsg(m)   --一次发多张
        end
    end)
--网抑云
	bot:subscribeGroupMsg(
		"GroupMessageEvent",function(event)        
			if event.message:find("/网抑云") then
				api_json = net.get("http.//api.heerdev.top.4995/nemusic/random")
				api_msg = api_json.match([["text"."(.-)"}]])
				group:sendMsg(Quote(msg)+api_msg)
			end
		end)
--壁纸
	bot:subscribeGroupMsg(
		"GroupMessageEvent",function(event)
			if event.message:find("/壁纸") then
				group:sendMsg(Image(Net.get("https.//api.ixiaowai.cn/gqapi/gqapi.php"), group) )
			end
		end)
end

local bot = Bot(x,"x",{
	protocol = "ANDROID_PHONE", --使用手表协议登录
	fileBasedDeviceInfo = "config/device.json", --指定设备信息路径
	noNetworkLog = true --不显示网络日志
})

bot:login()
local group = bot:getGroup(306713737)
onLoad(bot)

登陆好了之后就崩溃

Exception in thread "main" org.luaj.vm2.LuaError: @aio.lua:2 attempt to call nil                                                              
        at org.luaj.vm2.LuaValue.checkmetatag(LuaValue.java:3365)                                                                             
        at org.luaj.vm2.LuaValue.callmt(LuaValue.java:1997)                                                                                   
        at org.luaj.vm2.LuaValue.call(LuaValue.java:1512)                                                                                     
        at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:359)                                                                               
        at org.luaj.vm2.LuaClosure.call(LuaClosure.java:142)                                                                                  
        at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:357)                                                                               
        at org.luaj.vm2.LuaClosure.call(LuaClosure.java:133)                                                                                  
        at com.ooooonly.luakt.LuaCodeRunnerKt.runLuaFile(LuaCodeRunner.kt:14)                                                                 
        at com.ooooonly.luaMirai.MainKt.execFile(main.kt:21)                                                                                  
        at com.ooooonly.luaMirai.MainKt.main(main.kt:14)                                                                                      
        at com.ooooonly.luaMirai.MainKt$$$main.invoke(Unknown Source)                                                                         
        at kotlin.coroutines.intrinsics.IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$1.invokeSuspend(IntrinsicsJvm.kt:199)                                                                          
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)                                             
        at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)                                                               
        at kotlin.coroutines.jvm.internal.RunSuspendKt.runSuspend(RunSuspend.kt:19)                                                           
        at com.ooooonly.luaMirai.MainKt.main(main.kt)

如果不加onLoad(bot)机器人只登陆,不会做任何动作

Exception in thread "main" org.luaj.vm2.LuaError

Exception in thread "main" org.luaj.vm2.LuaError: @aio.lua:357 index expected, got nil
at org.luaj.vm2.LuaValue.typerror(LuaValue.java:1073)
at org.luaj.vm2.LuaValue.settable(LuaValue.java:3329)
at org.luaj.vm2.LuaValue.set(LuaValue.java:1165)
at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:250)
at org.luaj.vm2.LuaClosure.call(LuaClosure.java:133)
at com.ooooonly.luakt.LuaCodeRunnerKt.runLuaFile(LuaCodeRunner.kt:14)
at com.ooooonly.luaMirai.MainKt.execFile(main.kt:21)
at com.ooooonly.luaMirai.MainKt.main(main.kt:14)
at com.ooooonly.luaMirai.MainKt$$$main.invoke(Unknown Source)
at kotlin.coroutines.intrinsics.IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$1.invokeSuspend(IntrinsicsJvm.kt:199)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
at kotlin.coroutines.jvm.internal.RunSuspendKt.runSuspend(RunSuspend.kt:19)
at com.ooooonly.luaMirai.MainKt.main(main.kt)

lua语言方面的问题

在我写的脚本中,我一直发现一下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

JSON库无法处理数值类型?

Describe the bug
如题

To Reproduce

function test_json()
	local s='{"n":"abc","m":[301,302],"p":123456.78}'
	local j=Json.parseJson(s)
	for k,v in pairs(j) do
		print(k,v)
		if type(v)=="table" then
			for k1,v1 in pairs(v) do
				print(k1,v1)
			end
		end
	end
end
test_json()

Expected behavior
输出应该为:

m       table: 597f48df
1       301
2       302
p       123456.78
n       abc

实际输出:

m       table: 58a120b0
n       abc

Lua-Mirai 版本 1.1

该更新mirai内核辣

Trying:
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97)
        at kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:113)
        at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:108)
        at kotlin.reflect.jvm.internal.KCallableImpl.callDefaultMethod$kotlin_reflection(KCallableImpl.kt:159)
        at kotlin.reflect.jvm.internal.KCallableImpl.callBy(KCallableImpl.kt:112)
        at com.ooooonly.luakt.LuaFunctionBuilderKt$luaFunctionOfKFunctions$1.onInvoke(LuaFunctionBuilder.kt:76)
        at org.luaj.vm2.lib.VarArgFunction.invoke(VarArgFunction.java:77)
        at org.luaj.vm2.lib.VarArgFunction.call(VarArgFunction.java:58)
        at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:357)
        at org.luaj.vm2.LuaClosure.call(LuaClosure.java:133)
        at com.ooooonly.luakt.LuaCodeRunnerKt.runLuaFile(LuaCodeRunner.kt:14)
        at com.ooooonly.luaMirai.MainKt.execFile(main.kt:21)
        at com.ooooonly.luaMirai.MainKt.main(main.kt:14)
        at com.ooooonly.luaMirai.MainKt$$$main.invoke(Unknown Source)
        at kotlin.coroutines.intrinsics.IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$1.invokeSuspend(IntrinsicsJvm.kt:205)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:115)
        at kotlin.coroutines.jvm.internal.RunSuspendKt.runSuspend(RunSuspend.kt:19)
        at com.ooooonly.luaMirai.MainKt.main(main.kt)
Caused by: net.mamoe.mirai.network.WrongPasswordException: Error(title=温馨提示, message=当前版本过低,请升级到QQ最新版 本。, errorInfo= )
        at net.mamoe.mirai.qqandroid.network.QQAndroidBotNetworkHandler.closeEverythingAndRelogin(QQAndroidBotNetworkHandler.kt:186)
        at net.mamoe.mirai.qqandroid.network.QQAndroidBotNetworkHandler$closeEverythingAndRelogin$1.invokeSuspend(QQAndroidBotNetworkHandler.kt)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:32)
        at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:113)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
        at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:274)
        at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:84)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
        at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
        at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
        at com.ooooonly.luaMirai.lua.bridge.coreimpl.BotCoreImpl.login(BotCoreImpl.kt:44)
        ... 23 more
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97)
        at kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:113)
        at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:108)
        at kotlin.reflect.jvm.internal.KCallableImpl.callDefaultMethod$kotlin_reflection(KCallableImpl.kt:159)
        at kotlin.reflect.jvm.internal.KCallableImpl.callBy(KCallableImpl.kt:112)
        at com.ooooonly.luakt.LuaFunctionBuilderKt$luaFunctionOfKFunctions$1.onInvoke(LuaFunctionBuilder.kt:76)
        at org.luaj.vm2.lib.VarArgFunction.invoke(VarArgFunction.java:77)
        at org.luaj.vm2.lib.VarArgFunction.call(VarArgFunction.java:58)
        at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:357)
        at org.luaj.vm2.LuaClosure.call(LuaClosure.java:133)
        at com.ooooonly.luakt.LuaCodeRunnerKt.runLuaFile(LuaCodeRunner.kt:14)
        at com.ooooonly.luaMirai.MainKt.execFile(main.kt:21)
        at com.ooooonly.luaMirai.MainKt.main(main.kt:14)
        at com.ooooonly.luaMirai.MainKt$$$main.invoke(Unknown Source)
        at kotlin.coroutines.intrinsics.IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$1.invokeSuspend(IntrinsicsJvm.kt:205)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:115)
        at kotlin.coroutines.jvm.internal.RunSuspendKt.runSuspend(RunSuspend.kt:19)
        at com.ooooonly.luaMirai.MainKt.main(main.kt)
Caused by: net.mamoe.mirai.network.WrongPasswordException: Error(title=温馨提示, message=当前版本过低,请升级到QQ最新版 本。, errorInfo= )
        at net.mamoe.mirai.qqandroid.network.QQAndroidBotNetworkHandler.closeEverythingAndRelogin(QQAndroidBotNetworkHandler.kt:186)
        at net.mamoe.mirai.qqandroid.network.QQAndroidBotNetworkHandler$closeEverythingAndRelogin$1.invokeSuspend(QQAndroidBotNetworkHandler.kt)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:32)
        at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:113)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
        at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:274)
        at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:84)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
        at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
        at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
        at com.ooooonly.luaMirai.lua.bridge.coreimpl.BotCoreImpl.login(BotCoreImpl.kt:44)
        at com.ooooonly.luaMirai.lua.bridge.coreimpl.BotCoreImpl.login(BotCoreImpl.kt:21)
        ... 23 more
Exception in thread "main" org.luaj.vm2.LuaError: @.\aio.lua:536 No matching method "login" could be found
        at com.ooooonly.luakt.LuaFunctionBuilderKt$luaFunctionOfKFunctions$1.onInvoke(LuaFunctionBuilder.kt:87)
        at org.luaj.vm2.lib.VarArgFunction.invoke(VarArgFunction.java:77)
        at org.luaj.vm2.lib.VarArgFunction.call(VarArgFunction.java:58)
        at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:357)
        at org.luaj.vm2.LuaClosure.call(LuaClosure.java:133)
        at com.ooooonly.luakt.LuaCodeRunnerKt.runLuaFile(LuaCodeRunner.kt:14)
        at com.ooooonly.luaMirai.MainKt.execFile(main.kt:21)
        at com.ooooonly.luaMirai.MainKt.main(main.kt:14)
        at com.ooooonly.luaMirai.MainKt$$$main.invoke(Unknown Source)
        at kotlin.coroutines.intrinsics.IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$1.invokeSuspend(IntrinsicsJvm.kt:205)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:115)
        at kotlin.coroutines.jvm.internal.RunSuspendKt.runSuspend(RunSuspend.kt:19)
        at com.ooooonly.luaMirai.MainKt.main(main.kt)

内核太低辣

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.