MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    已解决 magic-signer-guide 安装与对接的问题

    HTTP API和第三方SDK
    3
    7
    850
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 遗
      遗世紫丁香 最后由 编辑

      搞了几天总算把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,和装签名服务前一样。

      1 条回复 最后回复 回复 引用 0
      • cssxsh
        cssxsh 最后由 编辑

        Exception in thread "main" java.net.UnknownHostException: msfwifi.3g.qq.com: Temporary failure in name resolution

        检查 DNS 是不是有问题

        遗 2 条回复 最后回复 回复 引用 0
        • 遗
          遗世紫丁香 @cssxsh 最后由 编辑

          @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)
          
          

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

          1 条回复 最后回复 回复 引用 0
          • Karlatemp
            Karlatemp 最后由 编辑

            那个docker镜像本来就会输出日志,看docker的realtime日志就好了啊

            1 条回复 最后回复 回复 引用 0
            • 遗
              遗世紫丁香 @cssxsh 最后由 编辑

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

              1 条回复 最后回复 回复 引用 0
              • cssxsh
                cssxsh 最后由 编辑

                1. KFCFactory 正常来说应该会被 SPI 机制加载注册
                2. 如果项目结构特殊,可用使用 KFCFactory.install 手动注册
                遗 1 条回复 最后回复 回复 引用 1
                • 遗
                  遗世紫丁香 @cssxsh 最后由 编辑

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

                  1 条回复 最后回复 回复 引用 0
                  • Referenced by  遗 遗世紫丁香 
                  • Topic has been marked as a question  遗 遗世紫丁香 
                  • Topic has been marked as solved  遗 遗世紫丁香 
                  • 1 / 1
                  • First post
                    Last post
                  Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact