MiraiForum

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

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

    开发交流
    3
    6
    513
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • H
      hundun000 ⭐2021⭐ 最后由 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 条回复 最后回复 回复 引用 0
      • RainChan
        RainChan 摸鱼 最后由 编辑

        @Him188

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

          workdingDir in BotConfiguration

          1 条回复 最后回复 回复 引用 0
          • H
            hundun000 ⭐2021⭐ 最后由 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 条回复 最后回复 回复 引用 0
            • Karlatemp
              Karlatemp 最后由 编辑

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

              1 条回复 最后回复 回复 引用 0
              • H
                hundun000 ⭐2021⭐ 最后由 编辑

                好了

                1 条回复 最后回复 回复 引用 0
                • 1 / 1
                • First post
                  Last post
                Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact