MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接
    1. 主页
    2. 遗世紫丁香
    遗
    • 资料
    • 关注 0
    • 粉丝 0
    • 主题 4
    • 帖子 13
    • 最佳 1
    • 有争议的 0
    • 群组 0

    遗世紫丁香

    @遗世紫丁香

    2
    声望
    6
    资料浏览
    13
    帖子
    0
    粉丝
    0
    关注
    注册时间 最后登录

    遗世紫丁香 取消关注 关注

    遗世紫丁香 发布的最佳帖子

    • RE: QSign 9.0.55-9.0.95(公益 API发布)

      大佬orz,主服务器502,副服务器530了

      发布在 技术交流板块
      遗
      遗世紫丁香

    遗世紫丁香 发布的最新帖子

    • RE: QSign 9.0.55-9.0.95(公益 API发布)

      @zhaodice 恢复了,感谢佬

      发布在 技术交流板块
      遗
      遗世紫丁香
    • RE: QSign 9.0.55-9.0.95(公益 API发布)

      大佬orz,主服务器502,副服务器530了

      发布在 技术交流板块
      遗
      遗世紫丁香
    • RE: bot与签名服务对接时报错Invalid Status code=403

      应该是网络通信的故障,我把签名服务编译成功后部署在本地就好了。

      发布在 HTTP API和第三方SDK
      遗
      遗世紫丁香
    • bot与签名服务对接时报错Invalid Status code=403

      很长时间没出过问题的bot无法登陆了,在把fix-protocol-version升级到1.13.0,并校对了部署签名服务的docker容器的时区后启动成功,但是不久又无法启动了,以下是启动bot时的报错(两次启动失败的报错相同):

      Caused by: java.io.IOException: Invalid Status code=403 text=Forbidden
              at org.asynchttpclient.netty.handler.WebSocketHandler.abort(WebSocketHandler.java:98)
              at org.asynchttpclient.netty.handler.WebSocketHandler.handleRead(WebSocketHandler.java:122)
              at org.asynchttpclient.netty.handler.AsyncHttpClientHandler.channelRead(AsyncHttpClientHandler.java:75)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
              at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
              at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
              at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
              at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:333)
              at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:454)
              at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
              at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
              at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
              at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
              at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
              at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
              at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
              at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
              at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
              at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
              at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
              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:833)
      

      签名服务部署在另一个服务器上(因为bot在windows端服务器上,docker安装比较麻烦,所以把kiliokuara/vivo50部署在了另一个服务器上),日志如下:

      2024-04-04 15:25:35 [INFO ] [vert.x-eventloop-thread-0] RpcServerBootstrap - [ROUTER] receiving get about page
      2024-04-04 15:25:37 [INFO ] [vert.x-eventloop-thread-0] RpcServerBootstrap - [ROUTER] receiving get handshake config request
      2024-04-04 15:25:37 [INFO ] [vert.x-eventloop-thread-0] RpcServerBootstrap - [ROUTER] receiving do handshake request
      2024-04-04 15:25:37 [INFO ] [vert.x-eventloop-thread-0] RpcServerBootstrap - [ROUTER] accepted do handshake request.
      2024-04-04 15:25:37 [INFO ] [vert.x-eventloop-thread-0] RpcServerBootstrap - session of bot ##数据擦除## is created: 445de260-83d0-4476-82a2-16c6aa9fbe38.b1ql//kaAMjlbwdmWwflgCWxFMUX5pxnWsAMDJ17E1rni7Sw+C08xgb+2Ilk4D5e5pppZwItfQe3qtzLiRa+2b0aak37YQa47q4aWyCuX2GwsSLrv3ZvlxzuGJPjZseH0wMQbTv8TslONrjp4hTOo+4Q4MTAl0uMyJVbn0wqt5OlsAx4TCMDifxoUFQ3gvJCtqb3VlwgDtU/qc8U7kb0rYFl29OceaYclBkYFWeXBW5gZi6+edcJU/67oYYlAnMVdmCUpIihHIeO3epWIG/1wYHfp53jehcMJNJloqNK8sGMeUMH9LSoGdaeP4r5OODpMgythMZ/V3txPOKtcueSgNwPOmQfncnWARDB7DwfpK/31YeRZFRO8cld/rH8hzbr/NrLiaTokD//6p/WSm2/ni0mN7m1Y+TigIxj/NwZDVSOa+yFFRp/Y7bErb4R8554MaJe+YgmRGZ7G5yDBU2vuendJl6+m4w25FCUcwla8FhZGzI/DtvTWzY2Ryps/70Joz6xfKp/TezOuSk6uXsn+HDS9h0WEk0nlVOqPtig223/kMT+I3iJCTeLOKDWM+aDhrAPZO3IpL7i8Zv5ZOH9RfjkHsWn/0w6pkJPOn8ylN79N1jJO+y3IJwusDuzPuso1cgEm6k3qK4lJjXZqPJ7xsj1+YIbDqc1+GTOVCSBdJo=
      2024-04-04 15:25:37 [INFO ] [vert.x-eventloop-thread-0] RpcServerBootstrap - [ROUTER] client request to check session state 445de260-83d0-4476-82a2-16c6aa9fbe38.b1ql//kaAMjlbwdmWwflgCWxFMUX5pxnWsAMDJ17E1rni7Sw+C08xgb+2Ilk4D5e5pppZwItfQe3qtzLiRa+2b0aak37YQa47q4aWyCuX2GwsSLrv3ZvlxzuGJPjZseH0wMQbTv8TslONrjp4hTOo+4Q4MTAl0uMyJVbn0wqt5OlsAx4TCMDifxoUFQ3gvJCtqb3VlwgDtU/qc8U7kb0rYFl29OceaYclBkYFWeXBW5gZi6+edcJU/67oYYlAnMVdmCUpIihHIeO3epWIG/1wYHfp53jehcMJNJloqNK8sGMeUMH9LSoGdaeP4r5OODpMgythMZ/V3txPOKtcueSgNwPOmQfncnWARDB7DwfpK/31YeRZFRO8cld/rH8hzbr/NrLiaTokD//6p/WSm2/ni0mN7m1Y+TigIxj/NwZDVSOa+yFFRp/Y7bErb4R8554MaJe+YgmRGZ7G5yDBU2vuendJl6+m4w25FCUcwla8FhZGzI/DtvTWzY2Ryps/70Joz6xfKp/TezOuSk6uXsn+HDS9h0WEk0nlVOqPtig223/kMT+I3iJCTeLOKDWM+aDhrAPZO3IpL7i8Zv5ZOH9RfjkHsWn/0w6pkJPOn8ylN79N1jJO+y3IJwusDuzPuso1cgEm6k3qK4lJjXZqPJ7xsj1+YIbDqc1+GTOVCSBdJo=
      
      发布在 HTTP API和第三方SDK
      遗
      遗世紫丁香
    • RE: 另一个magic-signer-guide 安装与对接的问题

      @cssxsh 已解决,谢谢大佬

      发布在 HTTP API和第三方SDK
      遗
      遗世紫丁香
    • 另一个magic-signer-guide 安装与对接的问题

      书接上回,在开发者的帮助下,我成功把bot开了起来。很快我又尝试去用相同的方法重启另一个bot,但不同的是这个bot运行在一个windows端服务器上,并且没有足够的空间部署docker。于是我开放了我自己服务器上的magic-signer-guide端口,让这个bot调用我服的签名服务,成功跑了起来。

      然而在bot运行了一天之后出问题了:

      java.lang.IllegalStateException: Session(bot=##数据擦除##) open fail
              at xyz.cssxsh.mirai.tool.ViVo50$Session.open(ViVo50.kt:344)
              at xyz.cssxsh.mirai.tool.ViVo50$Session.websocket(ViVo50.kt:395)
              at xyz.cssxsh.mirai.tool.ViVo50$initialize$1.invoke(ViVo50.kt:91)
              at xyz.cssxsh.mirai.tool.ViVo50$initialize$1.invoke(ViVo50.kt:88)
              at xyz.cssxsh.mirai.tool.ViVo50.initialize$lambda$3(ViVo50.kt:88)
              at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)
              at xyz.cssxsh.mirai.tool.ViVo50.initialize(ViVo50.kt:88)
              at net.mamoe.mirai.internal.network.components.EcdhInitialPublicKeyUpdaterImpl.initializeSsoSecureEcdh(EcdhInitialPublicKeyUpdater.kt:123)
              at net.mamoe.mirai.internal.network.components.SsoProcessorImpl.login(SsoProcessor.kt:224)
              at net.mamoe.mirai.internal.network.components.SsoProcessorImpl$login$1.invokeSuspend(SsoProcessor.kt)
              at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
              at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
              at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
              at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
              at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
              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.io.IOException: Invalid Status code=403 text=Forbidden
              at org.asynchttpclient.netty.handler.WebSocketHandler.abort(WebSocketHandler.java:92)
              at org.asynchttpclient.netty.handler.WebSocketHandler.handleRead(WebSocketHandler.java:118)
              at org.asynchttpclient.netty.handler.AsyncHttpClientHandler.channelRead(AsyncHttpClientHandler.java:78)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
              at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
              at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
              at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
              at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:311)
              at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:432)
              at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
              at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
              at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
              at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
              at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
              at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
              at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719)
              at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
              at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
              at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
              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:833)
      
      2023-07-21 12:25:24 W/Net ##数据擦除##: Network selector received exception, closing bot. (java.lang.IllegalStateException: Session(bot=##数据擦除##) open fail)
      Exception in thread "main" 2023-07-21 12:25:24 I/Bot ##数据擦除##: Bot cancelled: Bot closed
      java.lang.IllegalStateException: Session(bot=##数据擦除##) open fail
              at xyz.cssxsh.mirai.tool.ViVo50$Session.open(ViVo50.kt:344)
              at xyz.cssxsh.mirai.tool.ViVo50$Session.websocket(ViVo50.kt:395)
              at xyz.cssxsh.mirai.tool.ViVo50$initialize$1.invoke(ViVo50.kt:91)
              at xyz.cssxsh.mirai.tool.ViVo50$initialize$1.invoke(ViVo50.kt:88)
              at xyz.cssxsh.mirai.tool.ViVo50.initialize$lambda$3(ViVo50.kt:88)
              at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)
              at xyz.cssxsh.mirai.tool.ViVo50.initialize(ViVo50.kt:88)
              at net.mamoe.mirai.internal.network.components.EcdhInitialPublicKeyUpdaterImpl.initializeSsoSecureEcdh(EcdhInitialPublicKeyUpdater.kt:123)
              at net.mamoe.mirai.internal.network.components.SsoProcessorImpl.login(SsoProcessor.kt:224)
              at net.mamoe.mirai.internal.network.components.SsoProcessorImpl$login$1.invokeSuspend(SsoProcessor.kt)
              at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
              at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
              at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
              at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
              at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
              at net.mamoe.mirai.internal.deps.io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
              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.io.IOException: Invalid Status code=403 text=Forbidden
              at org.asynchttpclient.netty.handler.WebSocketHandler.abort(WebSocketHandler.java:92)
              at org.asynchttpclient.netty.handler.WebSocketHandler.handleRead(WebSocketHandler.java:118)
              at org.asynchttpclient.netty.handler.AsyncHttpClientHandler.channelRead(AsyncHttpClientHandler.java:78)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
              at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
              at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
              at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
              at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:311)
              at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:432)
              at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
              at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
              at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
              at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
              at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
              at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
              at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719)
              at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
              at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
              at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
              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:833)
      

      Docker日志:

      2023-07-21 04:25:17 [INFO ] [vert.x-eventloop-thread-0] RpcServerBootstrap - [ROUTER] receiving get about page
      2023-07-21 04:25:18 [INFO ] [vert.x-eventloop-thread-0] RpcServerBootstrap - [ROUTER] receiving get handshake config request
      2023-07-21 04:25:18 [INFO ] [vert.x-eventloop-thread-0] RpcServerBootstrap - [ROUTER] receiving do handshake request
      2023-07-21 04:25:18 [INFO ] [vert.x-eventloop-thread-0] RpcServerBootstrap - [ROUTER] accepted do handshake request.
      2023-07-21 04:25:18 [INFO ] [vert.x-eventloop-thread-0] RpcServerBootstrap - session of bot ##数据擦除## is created: ##数据擦除##
      2023-07-21 04:25:18 [INFO ] [vert.x-eventloop-thread-0] RpcServerBootstrap - [ROUTER] client request to check session state ##数据擦除##
      

      顺便我同学对满屏的vivo50感到十分震惊

      发布在 HTTP API和第三方SDK
      遗
      遗世紫丁香
    • RE: magic-signer-guide 安装与对接的问题

      @cssxsh 谢谢,加上KFCFactory.install()就可以用了,顺利通过了验证

      发布在 HTTP API和第三方SDK
      遗
      遗世紫丁香
    • RE: magic-signer-guide 安装与对接的问题

      @cssxsh docker那边启动后就没有任何log输出,然后我刚刚翻了FixProtocolVersion的源码,加载KFCFactory.json的时候应该会有log输出,但我这里就什么都没有,是不是少写了什么代码,根本就没加载呢?

      发布在 HTTP API和第三方SDK
      遗
      遗世紫丁香
    • RE: magic-signer-guide 安装与对接的问题

      @cssxsh 会不会是KFCFactory.json里的base_url要改成内网ip?我改了,也是卡了几十秒,然后返回code=45,但好像和之前的又不太一样:

      2023-07-18 09:36:50 W/Net 3368816838: Failed with auth method: Password@1467837607
      net.mamoe.mirai.network.WrongPasswordException: Error(bot=Bot(3368816838), code=45, title=禁止登录, message=登录失败,建议升级最新版本后重试,或通过问题反馈与我们联系。, errorInfo=)
              at net.mamoe.mirai.internal.network.components.SsoProcessorImpl$SlowLoginImpl.doLogin(SsoProcessor.kt:490)
              at net.mamoe.mirai.internal.network.components.SsoProcessorImpl$SlowLoginImpl$doLogin$1.invokeSuspend(SsoProcessor.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)
      
      

      另外这个有没有对接和握手有没有办法返回结果呢?我感觉就一直是在操作黑盒。。。

      发布在 HTTP API和第三方SDK
      遗
      遗世紫丁香
    • magic-signer-guide 安装与对接的问题

      搞了几天总算把docker搞定了(国内网络上的各种教程真的害人啊,中间还把服务器搞崩了一次,系统lib都坏了联系客服才修好。最后直接看docker的manual又参考了一篇StackOverflow就搞定了)

      但我不太确定是否真的对接成功了,也不确定操作方式是否正确。

      版本:
      net.mamoe:mirai-core:2.15.0
      fix-protocol-version-1.9.6

      docker我放在一个screen里,运行了指令后返回了一长串数字字母,我猜应该是部署成功了

      我的bot程序在另一个screen里,用kt写的,登录代码是这样的:

          FixProtocolVersion.fetch(BotConfiguration.MiraiProtocol.ANDROID_PAD, "8.9.58")
          bot = BotFactory.newBot(Config.qq, Config.password) {
              protocol = BotConfiguration.MiraiProtocol.ANDROID_PAD
              fileBasedDeviceInfo()
          }
          bot.login()
      

      KFCFactory.json:

      {
          "8.9.58": {
              "base_url": "http://127.0.0.1:8888",
              "type": "kiliokuara/magic-signer-guide",
              "serverIdentityKey": "vivo50",
              "authorizationKey": "kfc"
          }
      }
      

      端口和两个key都是一致的。运行bot后会卡一分钟左右,然后出现以下报错:

      2023-07-17 16:51:23 W/Net 3368816838: Exception in resumeConnection.
      NettyChannelException(message=Failed to connect msfwifi.3g.qq.com/<unresolved>:8080, cause=java.net.UnknownHostException: msfwifi.3g.qq.com: Temporary failure in name resolution)
              at net.mamoe.mirai.internal.network.impl.netty.NettyNetworkHandler.createConnection$suspendImpl(NettyNetworkHandler.kt:116)
              at net.mamoe.mirai.internal.network.impl.netty.NettyNetworkHandler$createConnection$1.invokeSuspend(NettyNetworkHandler.kt)
              at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
              at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
              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.net.UnknownHostException: msfwifi.3g.qq.com: Temporary failure in name resolution
              at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
              at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:932)
              at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1517)
              at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:851)
              at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1507)
              at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1366)
              at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1300)
              at java.base/java.net.InetAddress.getByName(InetAddress.java:1250)
              at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)
              at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)
              at java.base/java.security.AccessController.doPrivileged(AccessController.java:554)
              at io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)
              at io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)
              at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)
              at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)
              at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)
              at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)
              at io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)
              at io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)
              at io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)
              at io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)
              at io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)
              at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
              at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557)
              at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
              at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
              at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:625)
              at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:105)
              at io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)
              at io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:990)
              at io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:516)
              at io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:429)
              at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:486)
              at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
              at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
              at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
              at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
              at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
              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:831)
      
      2023-07-17 16:51:23 W/Net 3368816838: Network selector received exception, closing bot. (NettyChannelException(message=Failed to connect msfwifi.3g.qq.com/<unresolved>:8080, cause=java.net.UnknownHostException: msfwifi.3g.qq.com: Temporary failure in name resolution))
      Exception in thread "main" java.net.UnknownHostException: msfwifi.3g.qq.com: Temporary failure in name resolution
              at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
              at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:932)
              at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1517)
              at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:851)
              at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1507)
              at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1366)
              at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1300)
              at java.base/java.net.InetAddress.getByName(InetAddress.java:1250)
              at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)
              at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)
              at java.base/java.security.AccessController.doPrivileged(AccessController.java:554)
              at io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)
              at io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)
              at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)
              at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)
              at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)
              at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)
              at io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)
              at io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)
              at io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)
              at io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)
              at io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)
              at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
              at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557)
              at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
              at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
              at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:625)
              at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:105)
              at io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)
              at io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:990)
              at io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:516)
              at io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:429)
              at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:486)
              at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
              at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
              at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
              at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
              at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
              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:831)
              Suppressed: NettyChannelException(message=Failed to connect msfwifi.3g.qq.com/<unresolved>:8080, cause=java.net.UnknownHostException: msfwifi.3g.qq.com: Temporary failure in name resolution)
                      at net.mamoe.mirai.internal.network.impl.netty.NettyNetworkHandler.createConnection$suspendImpl(NettyNetworkHandler.kt:116)
                      at net.mamoe.mirai.internal.network.impl.netty.NettyNetworkHandler$createConnection$1.invokeSuspend(NettyNetworkHandler.kt)
                      at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
                      at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
                      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: [CIRCULAR REFERENCE: java.net.UnknownHostException: msfwifi.3g.qq.com: Temporary failure in name resolution]
      
      

      之后再运行就不卡了,直接弹code=45,和装签名服务前一样。

      发布在 HTTP API和第三方SDK
      遗
      遗世紫丁香