MiraiForum

    • Register
    • Login
    • Search
    • Popular
    • Recent
    • Unsolved
    • Tags
    • Groups
    • 友情链接

    BotFactory依次创建两个bot时出现exception

    开发交流
    3
    6
    144
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      hundun000 ⭐2021⭐ last edited by hundun000

      使用2.6.1 mirai-core。

      可复现。BotFactory创建第一个bot并执行bot.login(),等第一个bot可以收到群消息事件时,再BotFactory创建第二个bot并执行bot.login()。此时异常被打印为error级日志, 第二个bot可继续登录和正常工作。

      19|mirai-server | 2021-06-17 12:29:33 E/Bot 277****622: Failed to load account secrets from local cache. Invalidating cache...

      19|mirai-server | net.mamoe.mirai.internal.utils.crypto.DecryptionFailedException

      19|mirai-server | at net.mamoe.mirai.internal.utils.crypto.TEA.fail(TEA.kt:295)

      19|mirai-server | at net.mamoe.mirai.internal.utils.crypto.TEA.access$fail(TEA.kt:33)

      19|mirai-server | at net.mamoe.mirai.internal.utils.crypto.TEA$doOption$7.invoke(TEA.kt:271)

      19|mirai-server | at net.mamoe.mirai.internal.utils.crypto.TEA.doOption(TEA.kt:291)

      19|mirai-server | at net.mamoe.mirai.internal.utils.crypto.TEA.decrypt(TEA.kt:315)

      19|mirai-server | at net.mamoe.mirai.internal.utils.crypto.TEA.decrypt$default(TEA.kt:314)

      19|mirai-server | at net.mamoe.mirai.internal.QQAndroidBot.loadSecretsFromCacheOrCreate(QQAndroidBot.kt:108)

      19|mirai-server | at net.mamoe.mirai.internal.QQAndroidBot.initClient(QQAndroidBot.kt:133)

      19|mirai-server | at net.mamoe.mirai.internal.QQAndroidBot.<init>(QQAndroidBot.kt:125)

      19|mirai-server | at net.mamoe.mirai.internal.BotFactoryImpl.newBot(BotFactory.kt:34)

      19|mirai-server | at net.mamoe.mirai.BotFactory$INSTANCE.newBot(BotFactory.kt:115)

      19|mirai-server | at com.hundun.mirai.server.SpringConsole$BotThread.run(SpringConsole.java:76)

      看下了net.mamoe.mirai.internal.QQAndroidBot.loadSecretsFromCacheOrCreate源码,猜测是第二次创建时检测到第一次的缓存存在就试图去取。

      应该改为根据账号区分缓存,或是无缓存的账号只需要info级别的日志?

      1 Reply Last reply Reply Quote 0
      • RainChan
        RainChan 摸鱼 last edited by

        @Him188

        1 Reply Last reply Reply Quote 0
        • Karlatemp
          Karlatemp last edited by

          workdingDir in BotConfiguration

          1 Reply Last reply Reply Quote 0
          • H
            hundun000 ⭐2021⭐ last edited by hundun000

            补充:
            分别使用了两个deviceInfoFileName构造BotConfiguration

                    String deviceInfoFileName = botPrivateSettings.getBotAccount() + "_device.json";
                    Bot miraiBot = BotFactory.INSTANCE.newBot(botPrivateSettings.getBotAccount(), botPrivateSettings.getBotPwd(), new BotConfiguration() {
            
                        {
            
                            fileBasedDeviceInfo(deviceInfoFileName);
            
                            setProtocol(MiraiProtocol.ANDROID_PHONE);
            
                            enableContactCache();
            
                        }
            
                    });
            

            是建议两个deviceInfoFileName处于不同文件夹吗?(因为还要判断和自动创建文件夹就偷懒了

            1 Reply Last reply Reply Quote 0
            • Karlatemp
              Karlatemp last edited by

              https://github.com/mamoe/mirai/blob/dev/docs/Bots.md#修改运行目录

              1 Reply Last reply Reply Quote 0
              • H
                hundun000 ⭐2021⭐ last edited by

                好了

                1 Reply Last reply Reply Quote 0
                • 1 / 1
                • First post
                  Last post
                Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact