GithubHelp home page GithubHelp logo

mrxiaom / overflow Goto Github PK

View Code? Open in Web Editor NEW
197.0 2.0 15.0 862 KB

替换 mirai 实现为 Onebot 以进行无缝迁移

Home Page: https://mirai.mrxiaom.top

License: GNU Affero General Public License v3.0

Kotlin 80.51% Java 19.49%
dependency implementation mirai mirai-bot mirai-core onebot onebot11

overflow's Introduction

Overflow WIP

欢迎回到 mirai

Overflow 是 mirai-core-api 的实现,对接 OneBot 11 标准,实现 mirai 的无缝迁移。

形象图由 人间工作 绘制

project-tRNA 星标 mirai Onebot 11 论坛

当前 Overflow 正趋于稳定,欢迎各位测试。

兼容性说明

Overflow 支持且仅支持连接到大多数标准的 Onebot 或 go-cqhttp 协议,支持安装未使用 mirai 内部特性或 mirai 码的插件

  • 使用正向(主动)或反向(被动) WebSocket 连接
  • 在连接时使用 token 鉴权
  • 在代码中调用自定义的 action
  • 在消息中使用 CQ 码 不支持
  • 将 mirai 消息段序列化/反序列化为 json
  • 使用 MiraiCode (Mirai 码) 处理消息 不支持

由于主要维护者的学业等原因,Overflow 暂不支持 OpenShamrock (1.1.0+)、Lagrange (0.0.3+) 等协议实现在新版本中使用的 Kritor 协议标准。
如需使用 OpenShamrock,请使用 LTS (Long Term Stop) 版本 1.0.9
Overflow 可能会在该协议标准发布正式版后再逐步将不会跟进支持。
有关 Kritor 支持的相关信息,另请参见 Krigacy

鸣谢

本项目使用了 onebot-client 进行快速开发。
感谢该项目为本项目的发起者节约了大量的阅读文档与设计接口时间。

overflow's People

Contributors

evolvedghost avatar mrxiaom 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

overflow's Issues

使用 BiliBili Dynamic 插件报错

问题描述

2024-02-22 18:13:47 W/Bot.*: An exception occurred when processing event. Subscriber scope: 'ListenerTasker'. Broadcaster scope: 'Bot.*.EventDispatcher'
top.mrxiaom.overflow.internal.deps.gson.JsonSyntaxException: java.lang.NumberFormatException: Expected an int but was 1708595825859 at line 1 column 62 path $.data.message_id
        at top.mrxiaom.overflow.internal.deps.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:251)
        at top.mrxiaom.overflow.internal.deps.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:241)
        at top.mrxiaom.overflow.internal.deps.gson.internal.bind.ReflectiveTypeAdapterFactory$1.readIntoField(ReflectiveTypeAdapterFactory.java:212)
        at top.mrxiaom.overflow.internal.deps.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(ReflectiveTypeAdapterFactory.java:433)
        at top.mrxiaom.overflow.internal.deps.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:393)
        at top.mrxiaom.overflow.internal.deps.gson.internal.bind.ReflectiveTypeAdapterFactory$1.readIntoField(ReflectiveTypeAdapterFactory.java:212)
        at top.mrxiaom.overflow.internal.deps.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(ReflectiveTypeAdapterFactory.java:433)
        at top.mrxiaom.overflow.internal.deps.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:393)
        at top.mrxiaom.overflow.internal.deps.gson.Gson.fromJson(Gson.java:1227)
        at top.mrxiaom.overflow.internal.deps.gson.Gson.fromJson(Gson.java:1137)
        at top.mrxiaom.overflow.internal.deps.gson.Gson.fromJson(Gson.java:1047)
        at top.mrxiaom.overflow.internal.deps.gson.Gson.fromJson(Gson.java:1014)
        at cn.evole.onebot.sdk.util.json.GsonUtil.fromJson(GsonUtil.java:83)
        at cn.evolvefield.onebot.client.core.Bot.sendGroupMsg(Bot.kt:114)
        at cn.evolvefield.onebot.client.core.Bot$sendGroupMsg$1.invokeSuspend(Bot.kt)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
        at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
Caused by: java.lang.NumberFormatException: Expected an int but was 1708595825859 at line 1 column 62 path $.data.message_id
        at top.mrxiaom.overflow.internal.deps.gson.stream.JsonReader.nextInt(JsonReader.java:1186)
        at top.mrxiaom.overflow.internal.deps.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:249)
        ... 23 more

复现

进行解析视频操作就会触发

Overflow 版本

700df26

其他组件版本

No response

系统日志

No response

网络日志

No response

补充信息

No response

使用拉格朗日有些群消息无法获取

问题描述

在有些群聊里的消息可以被拉格朗日接收到,但是在overflow里无法接收。(因为是部署在树莓派上,没有远程桌面,所以只能拍照,请见谅)不知道是为什么
1b172909d00fe5e211450a1981b7bc14
cgi-bin_mmwebwx-bin_webwxgetmsgimg_ MsgID=6517431017753148198 skey=@crypt_91ea7dcc_835686ad7ee54b41fd7deab16a508e99 mmweb_appid=wx_webfilehelper

复现

在某些群的消息

Overflow 版本

213cf4d

其他组件版本

44477b9

系统日志

No response

网络日志

No response

补充信息

No response

无法正确接收到消息

在群里发送了一条消息,bot本应接收到该消息并作出响应(通过mirai-api-http连接)
刚启动的时候是可以正确响应的,但是过了一段时间后发现bot并没有做出响应,疑似是没有正确接收到消息

logs/onebot文件夹下有接收到该消息的日志

2023-12-06 19:06:55 D/Onebot: Client received <-- {"time":1701860814,"self_id":,"post_type":"message","message_type":"group","sub_type":"normal","message_id":,"group_id":,"peer_id":,"user_id":,"message":[{"data":{"text":"查询"},"type":"text"}],"raw_message":"查询","font":0,"sender":{"user_id":,"nickname":"","card":"","role":"owner","title":"","level":""}}

但是在logs文件夹下没有任何接收到该消息的日志,最后一条日志是

2023-12-06 14:59:41 I/Onebot: ▌ 反向 WebSocket 客户端 /host:port 已连接 ┈━═☆

bots/[QQ]/log目录下也没有接收到该消息的日志,最后一条日志是上一次接收到消息的日志(也就是说,之前是可以正常接收到消息的,但是后来不行了)

mirai-api-http:2.9.1
Overflow版本:3fefc93c3fb994480cec78ca524d8579c500821a

最新构建启动报错

问题描述

使用最新构建时启动时报错
2024-01-24 08:25:56 E/mirai-hibernate-plugin: org.hibernate.MappingException: entity class not found: xyz.cssxsh.mirai.hibernate.entry.FaceRecord org.hibernate.MappingException: entity class not found: xyz.cssxsh.mirai.hibernate.entry.FaceRecord at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.mapping.PersistentClass.getMappedClass(PersistentClass.java:171) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.model.internal.BinderHelper.getPropertyOverriddenByMapperOrMapsId(BinderHelper.java:873) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.model.internal.PropertyBinder.bindBasic(PropertyBinder.java:1016) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.model.internal.PropertyBinder.bindProperty(PropertyBinder.java:890) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.model.internal.PropertyBinder.buildProperty(PropertyBinder.java:788) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.model.internal.PropertyBinder.processElementAnnotations(PropertyBinder.java:709) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.model.internal.EntityBinder.processIdPropertiesIfNotAlready(EntityBinder.java:1026) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.model.internal.EntityBinder.handleIdentifier(EntityBinder.java:354) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.model.internal.EntityBinder.bindEntityClass(EntityBinder.java:234) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.model.internal.AnnotationBinder.bindClass(AnnotationBinder.java:423) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:256) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:279) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:322) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:129) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:449) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:101) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:910) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:960) at mirai-hibernate-plugin-2.8.0.mirai2.jar//xyz.cssxsh.mirai.hibernate.MiraiHibernatePlugin.onEnable(MiraiHibernatePlugin.kt:58) at net.mamoe.mirai.console.internal.plugin.JvmPluginInternal.internalOnEnable$mirai_console(JvmPluginInternal.kt:244) at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:393) at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:40) at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt) at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt:54) at net.mamoe.mirai.console.plugin.PluginManager.enablePlugin(PluginManager.kt:173) at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.enableAllLoadedPlugins$mirai_console(PluginManagerImpl.kt:193) at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge.doStart$mirai_console(MiraiConsoleImplementationBridge.kt:360) at net.mamoe.mirai.console.MiraiConsoleImplementation$Companion.start(MiraiConsoleImplementation.kt:512) at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon(MiraiConsoleTerminalLoader.kt:182) at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon$default(MiraiConsoleTerminalLoader.kt:181) at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.main(MiraiConsoleTerminalLoader.kt:59) Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [xyz.cssxsh.mirai.hibernate.entry.FaceRecord] at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:126) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.internal.ClassLoaderAccessImpl.classForName(ClassLoaderAccessImpl.java:67) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.mapping.PersistentClass.getMappedClass(PersistentClass.java:166) ... 30 more Caused by: java.lang.ExceptionInInitializerError at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Unknown Source) at mirai-hibernate-plugin-2.8.0.mirai2.jar[shared]//org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:123) ... 32 more Caused by: java.lang.IllegalArgumentException: Serializer for PttMessage can't be registered as a subclass for polymorphic serialization because its kind OPEN is not concrete. To work with multiple hierarchies, register it as a base class. at kotlinx.serialization.json.internal.PolymorphismValidator.checkKind(PolymorphismValidator.kt:41) at kotlinx.serialization.json.internal.PolymorphismValidator.polymorphic(PolymorphismValidator.kt:31) at kotlinx.serialization.modules.SerialModuleImpl.dumpTo(SerializersModule.kt:189) at kotlinx.serialization.json.JsonImpl.validateConfiguration(Json.kt:375) at kotlinx.serialization.json.JsonImpl.<init>(Json.kt:369) at kotlinx.serialization.json.JsonKt.Json(Json.kt:191) at kotlinx.serialization.json.JsonKt.Json$default(Json.kt:187) at mirai-hibernate-plugin-2.8.0.mirai2.jar//xyz.cssxsh.mirai.hibernate.entry.FaceRecord.<clinit>(FaceRecord.kt:66) ... 35 more

复现

添加mirai-hibernate-plugin-2.8.0.mirai2插件,启动报错

Overflow 版本

2.16.0-19e495b

其他组件版本

No response

系统日志

No response

网络日志

No response

补充信息

No response

语音消息以及表情无法发出

问题描述

使用Overflow和Lagrange,语音消息无法发出

复现

使用overflow-2.16.0-88426f1与Lagrange
发送语音消息以及包含表情的消息无法收到,overflow日志中会显示,但是lagrange日志报错

Overflow 版本

88426f1

其他组件版本

Lagrange-46fc168

系统日志

2024-03-06 22:11:02 W/Onebot: Request failed: [send_group_msg, echo=649] , retCode=200
2024-03-06 22:11:02 V/Bot.2411510662: Group(887911271) <- [overflow:audio,file=base64:////lgYAFgAADMAAf/+WBgMyAAAQ4UrjRY... (about 142.18 KB)]
2024-03-06 22:11:02 W/Onebot: Request failed: [send_group_msg, echo=650] , retCode=200
2024-03-06 22:11:02 V/Bot.2411510662: Group(887911271) <- 葡萄油(倒霉一姐の粉):辛苦了宝宝
【你的宝宝熊紫轶💓@熊紫轶(熊紫轶)】
辛苦你啦![回头]

网络日志

2024-03-06 22:11:02 D/Onebot: Client received <-- {"status":"failed","retcode":200,"data":null,"echo":649}
2024-03-06 22:11:02 W/Onebot: Request failed: [send_group_msg, echo=649] , retCode=200
2024-03-06 22:11:02 V/Onebot: Stacktrace: 
cn.evolvefield.onebot.client.util.ActionFailedException: , retCode=200
	at cn.evolvefield.onebot.client.util.ActionSendUtils.send(ActionSendUtils.kt:47)
	at cn.evolvefield.onebot.client.util.ActionSendUtils$send$1.invokeSuspend(ActionSendUtils.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:178)
	at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:166)
	at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:397)
	at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:431)
	at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:420)
	at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:328)
	at kotlinx.coroutines.ResumeAwaitOnCompletion.invoke(JobSupport.kt:1413)
	at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:318)
	at kotlinx.coroutines.JobSupport.tryFinalizeSimpleState(JobSupport.kt:295)
	at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:856)
	at kotlinx.coroutines.JobSupport.makeCompleting$kotlinx_coroutines_core(JobSupport.kt:806)
	at kotlinx.coroutines.CompletableDeferredImpl.complete(CompletableDeferred.kt:92)
	at cn.evolvefield.onebot.client.util.ActionSendUtils.onCallback(ActionSendUtils.kt:58)
	at cn.evolvefield.onebot.client.handler.ActionHandler.onReceiveActionResp(ActionHandler.kt:38)
	at cn.evolvefield.onebot.client.connection.IAdapter$DefaultImpls.onReceiveMessage(IAdapter.kt:26)
	at cn.evolvefield.onebot.client.connection.WSClient.onReceiveMessage(WSClient.kt:18)
	at cn.evolvefield.onebot.client.connection.WSClient.onMessage(WSClient.kt:43)
	at top.mrxiaom.overflow.internal.deps.websocket.client.WebSocketClient.onWebsocketMessage(WebSocketClient.java:636)
	at top.mrxiaom.overflow.internal.deps.websocket.drafts.Draft_6455.processFrameText(Draft_6455.java:986)
	at top.mrxiaom.overflow.internal.deps.websocket.drafts.Draft_6455.processFrame(Draft_6455.java:910)
	at top.mrxiaom.overflow.internal.deps.websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:402)
	at top.mrxiaom.overflow.internal.deps.websocket.WebSocketImpl.decode(WebSocketImpl.java:234)
	at top.mrxiaom.overflow.internal.deps.websocket.client.WebSocketClient.run(WebSocketClient.java:516)
	at java.base/java.lang.Thread.run(Thread.java:833)

2024-03-06 22:11:02 D/Onebot: Send to server --> {"action":"send_group_msg","params":{"group_id":887911271,"message":[{"type":"text","data":{"text":"葡萄油(倒霉一姐の粉):"}},{"type":"text","data":{"text":"辛苦了宝宝"}},{"type":"text","data":{"text":"\n【你的宝宝熊紫轶💓@熊紫轶(熊紫轶)】\n"}},{"type":"text","data":{"text":"辛苦你啦!"}},{"type":"face","data":{"id":127}},{"type":"text","data":{"text":""}}],"auto_escape":false},"echo":650}
2024-03-06 22:11:02 D/Onebot: Client received <-- {"status":"failed","retcode":200,"data":null,"echo":650}
2024-03-06 22:11:02 W/Onebot: Request failed: [send_group_msg, echo=650] , retCode=200
2024-03-06 22:11:02 V/Onebot: Stacktrace: 
cn.evolvefield.onebot.client.util.ActionFailedException: , retCode=200
	at cn.evolvefield.onebot.client.util.ActionSendUtils.send(ActionSendUtils.kt:47)
	at cn.evolvefield.onebot.client.util.ActionSendUtils$send$1.invokeSuspend(ActionSendUtils.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:178)
	at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:166)
	at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:397)
	at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:431)
	at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:420)
	at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:328)
	at kotlinx.coroutines.ResumeAwaitOnCompletion.invoke(JobSupport.kt:1413)
	at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:318)
	at kotlinx.coroutines.JobSupport.tryFinalizeSimpleState(JobSupport.kt:295)
	at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:856)
	at kotlinx.coroutines.JobSupport.makeCompleting$kotlinx_coroutines_core(JobSupport.kt:806)
	at kotlinx.coroutines.CompletableDeferredImpl.complete(CompletableDeferred.kt:92)
	at cn.evolvefield.onebot.client.util.ActionSendUtils.onCallback(ActionSendUtils.kt:58)
	at cn.evolvefield.onebot.client.handler.ActionHandler.onReceiveActionResp(ActionHandler.kt:38)
	at cn.evolvefield.onebot.client.connection.IAdapter$DefaultImpls.onReceiveMessage(IAdapter.kt:26)
	at cn.evolvefield.onebot.client.connection.WSClient.onReceiveMessage(WSClient.kt:18)
	at cn.evolvefield.onebot.client.connection.WSClient.onMessage(WSClient.kt:43)
	at top.mrxiaom.overflow.internal.deps.websocket.client.WebSocketClient.onWebsocketMessage(WebSocketClient.java:636)
	at top.mrxiaom.overflow.internal.deps.websocket.drafts.Draft_6455.processFrameText(Draft_6455.java:986)
	at top.mrxiaom.overflow.internal.deps.websocket.drafts.Draft_6455.processFrame(Draft_6455.java:910)
	at top.mrxiaom.overflow.internal.deps.websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:402)
	at top.mrxiaom.overflow.internal.deps.websocket.WebSocketImpl.decode(WebSocketImpl.java:234)
	at top.mrxiaom.overflow.internal.deps.websocket.client.WebSocketClient.run(WebSocketClient.java:516)
	at java.base/java.lang.Thread.run(Thread.java:833)

补充信息

No response

[建议]对Lagrange合并转发提供支持

已使用最新版Overflow,连接Lagrange,无法发送合并转发消息(node)。
自己研究了下发现了问题,拉格兰发送转发消息的时候,“uin”的值为qq号的字符串型,如果正常传入整数型会导致拉格兰报错并且无法发送。
是否考虑增加一个配置项以适配合并转发?

Overflow最新版使用Lagrange无法获取消息,@以及合并转发

问题描述

overflow-2.16.0-3ecc323,在Lagrange 602c67a 中能收到消息,但是在overflow日志中没有出现消息,退回d59ef26后正常,使用命令可主动发送消息。以及合并消息,消息包含@时发送日志显示W/Onebot: Request failed: [send_group_forward_msg, echo=33] , retCode=404

复现

使用overflow-2.16.0-3ecc323与Lagrange
发送包含@群友的消息,以及合并转发消息

Overflow 版本

3ecc323

其他组件版本

Lagrange602c67a

系统日志

3ecc323版本收不到消息在overflow侧没有日志
发送包含@群友的消息
2024-02-27 15:53:29 W/Onebot: Request failed: [send_group_msg, echo=5] , retCode=200
2024-02-27 15:53:29 V/Bot.*: Group(*) <- [mirai:at:*] 
这里是消息内容
2024-02-27 15:53:32 V/Bot.*: Group(*) <- [overflow:image,url=base64:///9j/4AAQSkZJRgABA*AD/4QAi... (about 203.00 KB),isEmoji=false]
图片的内容正常发送

合并转发消息
2024-02-27 15:55:51 W/Onebot: Request failed: [send_group_forward_msg, echo=10] , retCode=404
2024-02-27 15:55:51 V/Bot.*: Group(*) <- ForwardMessage(preview=[], title=*, brief=[*], source=*, summary=*, nodeList=[])

网络日志

No response

补充信息

No response

日志文件名日期错误

问题描述

2023-12-31这一天,logs下产生了一个名为2024-12-31.log的日志文件

image

复现

emmmm把电脑日期调到2023-12-31

Overflow 版本

1bf69de

其他组件版本

No response

系统日志

No response

网络日志

No response

补充信息

No response

无法艾特全员

问题描述

发送艾特全员消息时,未能艾特全员,只发送了文本内容

复现

使用mirai-api-http 2.9.1发送艾特全员消息,应正常显示为@全体成员 一条消息,但是实际只发送了一条消息这四个字

Overflow 版本

bad4daa

其他组件版本

OpenShamrock 1.0.7-dev.6201d12
mirai-api-http 2.9.1
Mirai console 2.16.0

系统日志

2023-12-18 21:06:58 D/Onebot: Send to server --> {"action":"send_group_msg","params":{"group_id":**********,"message":[{"type":"text","data":{}},{"type":"text","data":{"text":"一条消息"}}],"auto_escape":false},"echo":295}

网络日志

No response

补充信息

No response

语音消息无法发送

问题描述

通过overflow和lagrange发送语音消息无法发出

复现

通过overflow和lagrange发送语音消息无法发出

Overflow 版本

8c7dd0c

其他组件版本

No response

系统日志

2024-03-08 23:08:02 W/Onebot: Request failed: [send_group_msg, echo=196] app=Lagrange.OneBot v0.0.3 ,message=, retCode=200, retJson={"status":"failed","retcode":200,"data":null,"echo":196}
2024-03-08 23:08:02 V/Bot.2411510662: Group(937068620) <- [overflow:audio,file=base64:////lcQBTAAAD+M66iEFCEDHR0zPvlSVMi... (about 10.83 KB)]

网络日志

2024-03-08 23:08:02 D/Onebot: Client received <-- {"status":"failed","retcode":200,"data":null,"echo":196}
2024-03-08 23:08:02 W/Onebot: Request failed: [send_group_msg, echo=196] app=Lagrange.OneBot v0.0.3 ,message=, retCode=200, retJson={"status":"failed","retcode":200,"data":null,"echo":196}
2024-03-08 23:08:02 V/Onebot: Stacktrace: 
cn.evolvefield.onebot.client.util.ActionFailedException: app=Lagrange.OneBot v0.0.3 ,message=, retCode=200, retJson={"status":"failed","retcode":200,"data":null,"echo":196}
	at cn.evolvefield.onebot.client.util.ActionSendRequest.send(ActionSendRequest.kt:49)
	at cn.evolvefield.onebot.client.util.ActionSendRequest$send$1.invokeSuspend(ActionSendRequest.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:178)
	at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:166)
	at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:397)
	at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:431)
	at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:420)
	at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:328)
	at kotlinx.coroutines.ResumeAwaitOnCompletion.invoke(JobSupport.kt:1413)
	at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:318)
	at kotlinx.coroutines.JobSupport.tryFinalizeSimpleState(JobSupport.kt:295)
	at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:856)
	at kotlinx.coroutines.JobSupport.makeCompleting$kotlinx_coroutines_core(JobSupport.kt:806)
	at kotlinx.coroutines.CompletableDeferredImpl.complete(CompletableDeferred.kt:92)
	at cn.evolvefield.onebot.client.util.ActionSendRequest.onCallback(ActionSendRequest.kt:64)
	at cn.evolvefield.onebot.client.handler.ActionHandler.onReceiveActionResp(ActionHandler.kt:38)
	at cn.evolvefield.onebot.client.connection.IAdapter$DefaultImpls.onReceiveMessage(IAdapter.kt:26)
	at cn.evolvefield.onebot.client.connection.WSClient.onReceiveMessage(WSClient.kt:19)
	at cn.evolvefield.onebot.client.connection.WSClient.onMessage(WSClient.kt:45)
	at top.mrxiaom.overflow.internal.deps.websocket.client.WebSocketClient.onWebsocketMessage(WebSocketClient.java:636)
	at top.mrxiaom.overflow.internal.deps.websocket.drafts.Draft_6455.processFrameText(Draft_6455.java:986)
	at top.mrxiaom.overflow.internal.deps.websocket.drafts.Draft_6455.processFrame(Draft_6455.java:910)
	at top.mrxiaom.overflow.internal.deps.websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:402)
	at top.mrxiaom.overflow.internal.deps.websocket.WebSocketImpl.decode(WebSocketImpl.java:234)
	at top.mrxiaom.overflow.internal.deps.websocket.client.WebSocketClient.run(WebSocketClient.java:516)
	at java.base/java.lang.Thread.run(Thread.java:833)

补充信息

warn: Lagrange.OneBot.Core.Operation.OperationService[0]
Unexpected error encountered while handling message.
System.Exception: Encode failed
at Lagrange.OneBot.Message.Entity.RecordSegment.Build(MessageBuilder builder, SegmentBase segment)
at Lagrange.OneBot.Core.Operation.Message.MessageCommon.BuildMessages(MessageBuilder builder, List`1 segments)
at Lagrange.OneBot.Core.Operation.Message.SendGroupMessageOperation.HandleOperation(BotContext context, JsonNode payload)
at Lagrange.OneBot.Core.Operation.OperationService.HandleOperation(MsgRecvEventArgs e)

使用正向连接的聊天会多一层冒号

问题描述

原版的Mirai的聊天信息在终端中应该长这样(使用反向WS也是如此):
2024-02-20 10:00:0 V/Bot.114514: [QQ群(1919810)] 群员(10086) -> 聊天信息

使用正向连接我这儿长这样:
2024-02-20 10:00:0 V/Bot.114514: [QQ群(1919810)] 群员(10086) -> "聊天信息"

Mirai部分插件是按照前缀进行识别判断的,因此多一层冒号之后部分插件就失效了

复现

使用OpenShamrock,开启Onebot标准WebSocket,Shamrock作为Server,配置ws_host使用正向WS连接

Overflow 版本

overflow-core-all-2.16.0-700df26-SNAPSHOT-all.jar

其他组件版本

mirai-console-2.16.0-all.jar
mirai-console-terminal-2.16.0-all.jar
OpenShamrock-1.0.8.r296.e68a1ff-xposed
QQ-V 9.0.17.15190

系统日志

No response

网络日志

No response

补充信息

测试过原版Mirai和反向WS模式下的Overflow均无冒号,而正向WS模式下的Overflow会出现冒号,而我的另一个Nonebot机器人使用正向WS连接到OpenShamrock并没有出现类似情况,所以我认为应该不是OpenShamrock的问题

目前如何使用mirai码构造Image图片

问题描述

搭的是Overflow+LLOnebot,原先使用mirai核心时,存储了很多图片的mirai 码在数据库,同时也保存在服务器本地,存储为形如mirai:image:{01E9451B-70ED-EAE3-B37C-101F1EEBF5B5}.格式],通过一些特定的指令可以让bot把这些图片发出来,但是今天换成Overflow之后,从数据库查出mirai 码通过
MiraiCode.deserializeMiraiCode(miraiCode)形成消息链再发送,得到日志:
image

LLOnebot日志:

4/5/2024, 11:22:50 AM 昵称(*********): 发生错误 uri {C0CB1A95-B0BF-F2D0-DB70-432E0D608E15}.jpg 解析失败,TypeError [ERR_INVALID_URL]: Invalid URL 可能{C0CB1A95-B0BF-F2D0-DB70-432E0D608E15}.jpg不存在
4/5/2024, 11:22:50 AM 昵称(*********): ws 消息上报  {"status":"failed","retcode":1200,"data":null,"message":"uri {C0CB1A95-B0BF-F2D0-DB70-432E0D608E15}.jpg 解析失败,TypeError [ERR_INVALID_URL]: Invalid URL 可能{C0CB1A95-B0BF-F2D0-DB70-432E0D608E15}.jpg不存在","wording":"uri {C0CB1A95-B0BF-F2D0-DB70-432E0D608E15}.jpg 解析失败,TypeError [ERR_INVALID_URL]: Invalid URL 可能{C0CB1A95-B0BF-F2D0-DB70-432E0D608E15}.jpg不存在","echo":10} 

似乎图片资源的管理被交给了Onebot端?但是我接了一个语音服务也是把文件生成在Overflow这一端的插件资源目录的,可以正常发出。
最后日志显示回复消息的码值为overflow开头也有点疑惑,因为活人用户主动发送图片到群里时,日志接收到的仍然是mirai开头的,但是id部分好像变成了下载地址而不是编码了。

复现

同上

Overflow 版本

febc5da

其他组件版本

mirai-console 2.16.0
LLOneBot 3.20.6

系统日志

No response

网络日志

No response

补充信息

No response

优化 Base64 图片发送时日志输出

Overflow 版本:00fd581

当发送的图片为 Base64 类型时,整个文件的内容会原封不动输出到日志中。如果图片较大,会出现满屏日志的情况。希望可以简化 Base64 类型图片的日志输出信息。

[overflow:image,url=base64:///9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYI
... (about 75800 bytes)
0mWj+k/6q01mz4jHUOoxE6fJghCEOU//Z,isEmoji=false]

是否可以支持satori协议

支持Satori协议 这样可以不需要部署Lagrange或者OpenShamrock直接使用chronocat进行部署

这样的好处就是不需要用到签名 同时也不需要虚拟机 也可以在无头环境下运行

通过mirai-api-http接收消息失败

使用OpenShamrock + Overflow + mirai-api-http,发现虽然Overflow中能正常看到接收到的消息(以下截图中隐去了接收到的消息,位于报错消息之前),但是报了以下错误,并且通过mirai-api-http与Overflow相连的程序未能正确做出响应(正常情况下会回复一条消息)

image

[get_user_info, echo=4] API不存在

问题描述

在使用 mirai-http-api 间接调用获取账号信息时出现 [get_user_info, echo=4] API不存在 报错

复现

  1. 配置好 OneBot 和 Overflow
  2. 在 Overflow 上安装 mirai-http-api
  3. 通过 mirai-http-api 获取登陆的账号信息

Overflow 版本

2.16.0-10537f2

其他组件版本

  • OneBot: 1.2.0
  • mirai-console: 2.16.0
  • mirai-api-http: 2.9.1

系统日志

No response

网络日志

// ...
2024-01-10 00:30:38 D/Onebot: Send to server --> {"action":"get_user_info","params":{"user_id":1233456,"refresh":false},"echo":4}
2024-01-10 00:30:38 D/Onebot: Client received <-- {"data":null,"echo":4,"message":"API不存在","msg":"API_NOT_FOUND","retcode":404,"status":"failed","wording":"API不存在"}
2024-01-10 00:30:38 W/Onebot: Request failed: [get_user_info, echo=4] API不存在

补充信息

OneBot 提供了 get_stranger_info 这个 API,理论上把这个 API 拿来用就行了?

被动 WebSocket 时服务端不响应用户发出的指令信息

问题描述

被动 WebSocket 时 bot 貌似无法接收来自聊天中的指令。试过两个基于 MiraiConsole 的插件都不行,对来自 QQ 信息发出的指令完全无响应,而基于 MCL 的 mirai 是可用的。所以推测可能是 Overflow 的问题,不知到主动 WebSocket 是否也有此问题。

复现

最开始的测试插件为 JNRBilibiliDynamic MiraiPlugin

客户端服务端通讯一切正常,服务端可以使用 /overflow friend 命令发送消息,也能接收到客户端发来的私聊指令消息,但是不会对指令做出任何反应。

最后尝试了一下直接用 /permission add <QQ 号> * 命令赋予用户全部指令权限,用户打出 /help 仍无反应。

无标题

Overflow 版本

795845b

其他组件版本

在 Windows Server 2019 (17763.1339) 使用 mumu 模拟器 v3.7.10QQ v8.9.80.12440Kitsune Magisk R65C33E4FLSPosed-v1.9.2-7024-zygisk-releaseShamrock-v1.0.8.r317.63ce2d4-all 搭建客户端;在 Ubuntu 20.04.6 LTS 使用 overflow-2.16.0-795845b-SNAPSHOT 整合包搭建服务端。

系统日志

没有任何相关报错,推测 overflow 没有正确将消息传递给 mirai?

网络日志

No response

补充信息

No response

在OneBot实现端使用QC码时机器人不回复

问题描述

使用openShamrock对接并启用QC码格式,机器人不处理全局指令
带/时回复正常
2024-01-24 08:32:25 V/Bot.2584574762: [季落秋风 - Minecraft(806915610)] 服主-梓不过是枫(2039475150) -> "/wifeyouwant" 2024-01-24 08:32:25 V/Bot.2584574762: Group(806915610) <- 变态渣男插件 - 帮助 /wuw reload - 重载配置文件
不带/的全局指令不处理
2024-01-24 08:32:34 V/Bot.2584574762: [季落秋风 - Minecraft(806915610)] 服主-梓不过是枫(2039475150) -> "抽老婆"

复现

使用openShamrock对接并启用QC码

Overflow 版本

2.16.0-19e495b

其他组件版本

No response

系统日志

No response

网络日志

No response

补充信息

No response

反向WebSocket异常断开

问题描述

使用OpenShamrock的反向WebSocket连接Overflow,会出现突然断开且两边均无异常报错的情况,过一会又会自动连上

复现

一开始Overflow可以正常连接OpenShamrock,可以正常收发消息,然后突然就断开了,过一会又突然自己连上了

不知道该怎么复现,但已经遇到三回了,平均一天一回吧

Overflow 版本

1bf69de

其他组件版本

OpenShamrock 1.0.7.r204.34eccda

系统日志

2023-12-20 18:47:06 W/Onebot: Request failed: [send_group_msg, echo=345] Timed out waiting for 10000 ms
2023-12-20 18:48:12 I/Onebot: ▌ 反向 WebSocket 客户端连接因 The connection was closed because the other endpoint did not respond with a pong in time. For more information check: https://github.com/TooTallNate/Java-WebSocket/wiki/Lost-connection-detection 已关闭

【中间省略了大量由mirai-api-http主动发出的消息,虽然`logs`里的日志有这些发送记录,但是`logs/onebot`下的日志并没有这些发送记录,OpenShamrock端也并没有收到】

2023-12-20 20:17:58 I/Onebot: ▌ 反向 WebSocket 客户端 /********:**** 已连接 ┈━═☆

网络日志

No response

补充信息

附上OpenShamrock端的日志

屏幕截图 2023-12-20 202320

【中间省略了一些OpenShamrock自身接收到的QQ消息,非Overflow发送过去的】

6bdbac093ac9e79b95ee42046f85aa2f

回复 id 过长,Int 无法满足需求

2024-02-11 12:30:07 W/stderr: Exception in thread "DefaultDispatcher-worker-9" java.lang.NumberFormatException: For input string: "2518984560"
2024-02-11 12:30:07 W/stderr: at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
2024-02-11 12:30:07 W/stderr: at java.base/java.lang.Integer.parseInt(Integer.java:662)
2024-02-11 12:30:07 W/stderr: at java.base/java.lang.Integer.parseInt(Integer.java:778)
2024-02-11 12:30:07 W/stderr: at top.mrxiaom.overflow.internal.message.OnebotMessages.deserializeFromOneBotJson$overflow_core(OnebotMessages.kt:259) 2024-02-11 12:30:07 W/stderr: at top.mrxiaom.overflow.internal.message.OnebotMessages.deserializeFromOneBot$overflow_core(OnebotMessages.kt:181)
2024-02-11 12:30:07 W/stderr: at top.mrxiaom.overflow.internal.message.OnebotMessages.deserializeFromOneBot$overflow_core$default(OnebotMessages.kt:179) 2024-02-11 12:30:07 W/stder

请求兼容Mirai的序列化方法

尝试使用最新版本
Lagrange.OneBot(Nightly Release 240408版本)、Overflow(2.16.0-febc5da)、MiraiCP(2.16.0)
MiraiCP
MiraiCP-template

当收到消息时报错如后附。
可能需要Mirai的序列化方法以兼容如MiraiCP的更多插件?
谢谢!

2024-04-12 21:10:08 E/MiraiCP: Exception in coroutine Plugin tech.eritquearcus.miraicp of MiraiCP kotlinx.serialization.SerializationException: Class 'class top.mrxiaom.overflow.internal.message.data.IncomingSource$group$1' is not registered for polymorphic serialization in the scope of 'SingleMessage'. To be registered automatically, class 'class top.mrxiaom.overflow.internal.message.data.IncomingSource$group$1' has to be '@Serializable', and the base class 'SingleMessage' has to be sealed and '@Serializable'. Alternatively, register the serializer for 'class top.mrxiaom.overflow.internal.message.data.IncomingSource$group$1' explicitly in a corresponding SerializersModule. at kotlinx.serialization.internal.AbstractPolymorphicSerializerKt.throwSubtypeNotRegistered(AbstractPolymorphicSerializer.kt:102) at kotlinx.serialization.internal.AbstractPolymorphicSerializerKt.throwSubtypeNotRegistered(AbstractPolymorphicSerializer.kt:114) at kotlinx.serialization.PolymorphicSerializerKt.findPolymorphicSerializer(PolymorphicSerializer.kt:109) at kotlinx.serialization.json.internal.StreamingJsonEncoder.encodeSerializableValue(StreamingJsonEncoder.kt:233) at kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableElement(AbstractEncoder.kt:80) at kotlinx.serialization.internal.CollectionLikeSerializer.serialize(CollectionSerializers.kt:69) at net.mamoe.mirai.message.data.MessageChain$Serializer.serialize(MessageChain.kt:278) at net.mamoe.mirai.message.data.MessageChain$Serializer.serialize(MessageChain.kt:273) at kotlinx.serialization.json.internal.StreamingJsonEncoder.encodeSerializableValue(StreamingJsonEncoder.kt:228) at kotlinx.serialization.json.internal.JsonStreamsKt.encodeByWriter(JsonStreams.kt:28) at kotlinx.serialization.json.Json.encodeToString(Json.kt:81) at net.mamoe.mirai.message.data.MessageChain$Companion.serializeToJsonString(MessageChain.kt:330) at net.mamoe.mirai.message.data.MessageChain$Companion.serializeToJsonString$default(MessageChain.kt:328) at MiraiCP-plugin-2.16.0.mirai2.jar//tech.eritquearcus.miraicp.shared.Packets$Outgoing$MessageEventData.<init>(Packet.kt:575) at MiraiCP-plugin-2.16.0.mirai2.jar//tech.eritquearcus.miraicp.shared.Packets$Utils.toEventData(Packet.kt:789) at MiraiCP-plugin-2.16.0.mirai2.jar//tech.eritquearcus.miraicp.shared.PublicShared$onEnable$2.invokeSuspend(PublicShared.kt:849) at MiraiCP-plugin-2.16.0.mirai2.jar//tech.eritquearcus.miraicp.shared.PublicShared$onEnable$2.invoke(PublicShared.kt) at MiraiCP-plugin-2.16.0.mirai2.jar//tech.eritquearcus.miraicp.shared.PublicShared$onEnable$2.invoke(PublicShared.kt) at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invokeSuspend(EventChannel.kt:484) at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invoke(EventChannel.kt) at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invoke(EventChannel.kt) at net.mamoe.mirai.internal.event.SafeListener$onEvent$2.invokeSuspend(SafeListener.kt:59) at net.mamoe.mirai.internal.event.SafeListener$onEvent$2.invoke(SafeListener.kt) at net.mamoe.mirai.internal.event.SafeListener$onEvent$2.invoke(SafeListener.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:169) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) at net.mamoe.mirai.internal.event.SafeListener.onEvent(SafeListener.kt:59) at net.mamoe.mirai.internal.event.EventListeners.process(EventListeners.kt:119) at net.mamoe.mirai.internal.event.EventListeners.callListeners$overflow_core(EventListeners.kt:67) at net.mamoe.mirai.internal.event.EventChannelImpl.callListeners(EventChannelImpl.kt:86) at net.mamoe.mirai.internal.event.EventChannelImpl.broadcastEventImpl(EventChannelImpl.kt:76) at net.mamoe.mirai.internal.network.components.EventDispatcherImpl.broadcast$suspendImpl(EventDispatcher.kt:78) at net.mamoe.mirai.internal.network.components.EventDispatcherImpl.broadcast(EventDispatcher.kt) at net.mamoe.mirai.internal.network.components.EventDispatcherImpl$broadcastAsync$job$1.invokeSuspend(EventDispatcher.kt:92) at net.mamoe.mirai.internal.network.components.EventDispatcherImpl$broadcastAsync$job$1.invoke(EventDispatcher.kt) at net.mamoe.mirai.internal.network.components.EventDispatcherImpl$broadcastAsync$job$1.invoke(EventDispatcher.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:55) at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:112) at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126) at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56) at kotlinx.coroutines.BuildersKt.launch(Unknown Source) at net.mamoe.mirai.internal.network.components.EventDispatcherImpl.broadcastAsync-kKe4JaQ(EventDispatcher.kt:89) at net.mamoe.mirai.internal.network.components.EventDispatcher$DefaultImpls.broadcastAsync-kKe4JaQ$default(EventDispatcher.kt:24) at top.mrxiaom.overflow.internal.listener.GroupMessageListener.onMessage(group.kt:58) at top.mrxiaom.overflow.internal.listener.GroupMessageListener.onMessage(group.kt:34) at cn.evolvefield.onebot.client.listener.EventListenerKt.message(EventListener.kt:21) at cn.evolvefield.onebot.client.handler.EventBus.onReceive(EventBus.kt:44) at cn.evolvefield.onebot.client.connection.IAdapter$onReceiveMessage$1.invokeSuspend(IAdapter.kt:31) 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:570) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)

消息中message_id类型解析问题

问题描述

Onebot V11标准中,message_id的数据类型为number (int32),但是似乎Overflow在回复信息中会将其解析为uint32

复现

我的业务逻辑代码大致如下:

@OptIn(DelicateCoroutinesApi::class)
fun sendGroupsMessage(gm: GroupMessageEvent, message: String) {
    GlobalScope.launch {
        val chain = buildMessageChain {
            gm.message.quote()
            +PlainText(message)
        }
        gm.group.sendMessage(chain)
    }
}
GlobalEventChannel.subscribeAlways<GroupMessageEvent> {
    sendGroupsMessage(it, "XXXX")
}

就是一种通过GroupMessageEvent来回复信息的效果,回复使用者的信息并发送XXXX

大多数情况是正常的,有时候会报错

Onebot的log如下:

2024-04-01 10:27:55 D/Onebot: Client received <-- {"message_type":"group","sub_type":"normal","message_id":-964635551,"group_id":GID,"user_id":UID,"anonymous":null,"message":[{"type":"text","data":{"text":"XXX"}}],"raw_message":"XXX","font":0,"sender":{"user_id":UID,"nickname":"NICK","card":"CARD","sex":"unknown","age":0,"area":"","level":"100","role":"admin","title":""},"time":1711938475,"self_id":BOTID,"post_type":"message"}
2024-04-01 10:27:55 D/Onebot: Send to server --> {"action":"send_group_msg","params":{"group_id":GID,"message":[{"type":"reply","data":{"id":"3330331745"}},{"type":"text","data":{"text":"XXX"}},"auto_escape":false},"echo":264}
2024-04-01 10:27:55 D/Onebot: Client received <-- {"status":"failed","retcode":200,"data":null,"echo":264}

在这段日志实例中,message id -964635551在回复的时候被解析为了3330331745,目测应该是int32被解析为了uint32

Lagrange的日志也证明了这一点,超出int32范围:

warn: Lagrange.OneBot.Core.Operation.OperationService[0]
      Unexpected error encountered while handling message.
      System.OverflowException: Value was either too large or too small for an Int32.
         at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, ReadOnlySpan`1 value, TypeCode type)
         at System.Int32.Parse(String s)
         at Lagrange.OneBot.Message.Entity.ReplySegment.Build(MessageBuilder builder, SegmentBase segment) in {PATH}\Lagrange.OneBot\Message\Entity\ReplySegment.cs:line 27
         at Lagrange.OneBot.Core.Operation.Message.MessageCommon.BuildMessages(MessageBuilder builder, List`1 segments) in {PATH}\Lagrange.OneBot\Core\Operation\Message\MessageCommon.cs:line 215
         at Lagrange.OneBot.Core.Operation.Message.MessageCommon.ParseChain(OneBotGroupMessage message) in {PATH}\Lagrange.OneBot\Core\Operation\Message\MessageCommon.cs:line 143
         at Lagrange.OneBot.Core.Operation.Message.SendGroupMessageOperation.HandleOperation(BotContext context, JsonNode payload) in {PATH}\Lagrange.OneBot\Core\Operation\Message\SendGroupMessageOperation.cs:line 19
         at Lagrange.OneBot.Core.Operation.OperationService.HandleOperation(MsgRecvEventArgs e) in {PATH}\Lagrange.OneBot\Core\Operation\OperationService.cs:line 58

Overflow 版本

213cf4d

其他组件版本

Mirai目录Libs:
mirai-console-2.16.0
mirai-console-terminal-2.16.0-all
overflow-core-all-2.16.0-213cf4d-SNAPSHOT-all
bcprov-jdk15on-1.64

Onebot实现:
Lagrange.OneBot (Commit:62f48c224a683f4721f1c94f58df5468663ac9d1)

系统日志

No response

网络日志

No response

补充信息

目前来说message_id在0到2147483647的时候是正常的,而且大多数message_id都小于2147483647,我这儿也就一个群里出现,因此表现形式是就那个群无法发送,且不清楚这个在OpenShamrock上是不是一样的表现(好像之前在OpenShamrock上没遇到过),因此提issue了

同样的该群的所有带回复的信息也无法获取,目测也是把回复的Reply的message id解析到了uint32(?),Overflow报错如下:

2024-04-01 11:12:54 W/stderr: Exception in thread "DefaultDispatcher-worker-7" java.lang.NumberFormatException: Invalid number format: '-960279562'
2024-04-01 11:12:54 W/stderr:   at kotlin.text.StringsKt__StringNumberConversionsKt.numberFormatError(StringNumberConversions.kt:203)
2024-04-01 11:12:54 W/stderr:   at kotlin.text.UStringsKt.toUInt(UStrings.kt:92)
2024-04-01 11:12:54 W/stderr:   at top.mrxiaom.overflow.internal.message.OnebotMessages.deserializeFromOneBotJson$overflow_core(OnebotMessages.kt:333)
2024-04-01 11:12:54 W/stderr:   at top.mrxiaom.overflow.internal.message.OnebotMessages.deserializeFromOneBot$overflow_core(OnebotMessages.kt:253)
2024-04-01 11:12:54 W/stderr:   at top.mrxiaom.overflow.internal.message.OnebotMessages.deserializeFromOneBot$overflow_core$default(OnebotMessages.kt:251)
2024-04-01 11:12:54 W/stderr:   at top.mrxiaom.overflow.internal.listener.GroupMessageListener.onMessage(group.kt:42)
2024-04-01 11:12:54 W/stderr:   at top.mrxiaom.overflow.internal.listener.GroupMessageListener.onMessage(group.kt:34)
2024-04-01 11:12:54 W/stderr:   at cn.evolvefield.onebot.client.listener.EventListenerKt.message(EventListener.kt:21)
2024-04-01 11:12:54 W/stderr:   at cn.evolvefield.onebot.client.handler.EventBus.onReceive(EventBus.kt:44)
2024-04-01 11:12:54 W/stderr:   at cn.evolvefield.onebot.client.connection.IAdapter$onReceiveMessage$1.invokeSuspend(IAdapter.kt:31)
2024-04-01 11:12:54 W/stderr:   at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
2024-04-01 11:12:54 W/stderr:   at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
2024-04-01 11:12:54 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
2024-04-01 11:12:54 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
2024-04-01 11:12:54 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
2024-04-01 11:12:54 W/stderr:   at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
2024-04-01 11:12:54 W/stderr:   Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [CoroutineName(overflow), StandaloneCoroutine{Cancelling}@2ca510dd, Dispatchers.Default]

刚刚看到代码了:

is QuoteReply -> when { // 忽略分片消息情况
// TODO: 待定,Lagrange.Core 中的 reply id 类型较混乱,写入的时候 uint.ToString(),读取的时候 (uint)int.Parse()
app.contains("lagrange") -> put("id", single.source.ids[0].toUInt().toString())
else -> put("id", single.source.ids[0].toString())
}

val id = when {
app.contains("lagrange") -> data["id"].string.toUInt().toInt()
else -> data["id"].string.toInt()
}

😨要不直接干成long得了,反正两边交互用的json(

无法启动,显示错误:无法初始化主类 net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader

问题描述
start.sh脚本启动后显示

错误: 无法初始化主类 net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader
原因: java.lang.NoClassDefFoundError: kotlinx/coroutines/CoroutineScope

按照用户手册方法三安装,依次准备了三个文件 mirai-console-2.16.0-all.jar mirai-console-terminal-2.16.0-all.jar overflow-core-all-2.16.0-all.jar
创建 libs 文件夹,将以上内容放入该文件夹。
使用 start.sh(Linux/MacOS) 如下

java -cp "$CLASSPATH:./libs/*" net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader

overflow版本
overflow版本:overflow-core-all-5194d53

`69f24b2`之后无法正常启动

问题描述

Overflow更新到69f24b2之后就无法正常启动

复现

使用MCLOverflow以最新的69f24b2版本启动

Overflow 版本

69f24b2

其他组件版本

Libs目录:

├── bcprov-jdk15on-1.64.jar
├── bcprov-jdk15on-1.64.jar.sha1
├── mirai-console-2.16.0-all.jar
├── mirai-console-2.16.0-all.jar.sha1
├── mirai-console-terminal-2.16.0-all.jar
├── mirai-console-terminal-2.16.0-all.jar.sha1
├── overflow-core-all-2.16.0-69f24b2-SNAPSHOT-all.jar
└── overflow-core-all-2.16.0-69f24b2-SNAPSHOT-all.jar.sha1

Onebot实现:
Lagrange.Onebot 7fa1d6a

MCLOverflow版本:
snapshots-repo dacb7ee

系统日志

整个启动过程会产生2MB的输出后退出,打包后将放置于补充信息

网络日志

于连接onebot之前就已退出,未产生网络日志

补充信息

最后一个可以正常使用的commit为1c9ef44,因此初步判断为69f24b2的问题
overflow_error_log.zip

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.