MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接
    1. 主页
    2. hundun000
    3. 帖子
    H
    • 资料
    • 关注 0
    • 粉丝 3
    • 主题 15
    • 帖子 157
    • 最佳 8
    • 有争议的 0
    • 群组 2

    hundun000 发布的帖子

    • RE: 无法登录的临时处理方案

      @hundun000 没事了……是我放错workDir了

      发布在 官方公告
      H
      hundun000
    • RE: 无法登录的临时处理方案

      直接使用mirai-core 2.6.1。今天开发时因为bug,导致一个账号短时间内频繁登录,然后原本能用的device.json不能用了

      25|mirai-server | 2021-06-21 18:33:28 V/Net 277xxxx622: Recv: UnsafeLogin(bot=Bot(277xxxx622), url=https://ti.qq.com/safe/verify?_wv=2&_wwv=128&uin=277xxxx622&sig=6ttKI8dCNzJAtvvfm%2FHX4I9stijjz0V2iJcvqTqYF9xRvMnwqjDxmdgwGMO9SwmK%2F9lZqV8SzqHVERNv9Y3A2TBsCTlwJVLq3Vs%2BFJxzP7HCz0EA7qiDkWfWz4BTDVCS)

      使用MiraiAndroid,重新生成device.json,扫码验证,然后在MiraiAndroid登录成功。但是导出device.json放到服务器,还是报上面的错。

      72fb1e08-9ab6-4e8d-9249-d18471629bd0-image.png

      发布在 官方公告
      H
      hundun000
    • RE: 架构设计:抽离出“纯bot逻辑”?

      @lc6a 谢谢,我晚点研究一下。
      我之前试过mirai+springboot,独立启动版SpringBootApplication作为main会弄,不过不够精通springboot,不会弄作为插件时如何正确加载SpringContext等,最后就忍痛移除了Springboot。

      不过即使移除了Springboot,但是我的框架还是保留了AOP和IOC的风格,再改回Springboot也可以考虑。

      发布在 开发交流
      H
      hundun000
    • RE: 架构设计:抽离出“纯bot逻辑”?

      @mill413
      嗯,我差不多也是这样实现了。主要考虑是我的功能a、b其实分别指的是一个大功能的集合。具体来说,a是明日方舟游戏助手,包含数个明日方舟相关的子功能;b是舰队收藏游戏助手,包含数个舰队收藏相关的子功能;用户或社区开发者,应该大多数都是只希望使用/开发其中一个游戏的大功能吧?即使说明了可以通过配置不启用另一个游戏的大功能。感觉还是不如分开成两个插件。

      发布在 开发交流
      H
      hundun000
    • RE: 架构设计:抽离出“纯bot逻辑”?

      研究了几天,增加了对插件设计粒度的理解。发现我的独立应用不适合转为插件……至少是不适合转为“一个插件”。

      假设需求是:第一个bot账号加入群A,需要功能a和功能b;第二个bot账号加入群B,需要功能b和功能c;

      如果一开始就按插件来实现这个需求,较好的方案应该是:开发出插件a、插件b、插件c。把插件a和插件b放入第一个mirai-console然后登陆第一个bot账号。把插件b和插件c放入第二个mirai-console然后登陆第二个bot账号。

      然而我为独立应用写的“纯bot逻辑”是:写一个同时提供a、b、c功能的服务,和一个可配置的调度器,配成第一个bot账号只能使用其中的a、b功能,第二个bot账号只能使用其中的b、c功能。

      此时再试图把“纯bot逻辑”包装成插件,就会觉得这个同时提供a、b、c功能的插件“过重”,混杂了没有什么关系的功能a、b,还需要学习配置调度器。这不是一个合适的插件。

      发布在 开发交流
      H
      hundun000
    • RE: BotFactory依次创建两个bot时出现exception

      好了

      发布在 开发交流
      H
      hundun000
    • RE: BotFactory依次创建两个bot时出现exception

      补充:
      分别使用了两个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处于不同文件夹吗?(因为还要判断和自动创建文件夹就偷懒了

      发布在 开发交流
      H
      hundun000
    • BotFactory依次创建两个bot时出现exception

      使用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级别的日志?

      发布在 开发交流
      H
      hundun000
    • RE: bot一段时间后不再收到对话消息,且出现Received unknown commandName: StatSvc.QueryHB;

      重启应用并重新登录后未再出现此问题。检索了下两周以来的日志,该问题也只出现了这一次。
      不过我还是觉得当时并没有进行同时登陆强制下线或手动踢下线。

      发布在 BUG反馈
      H
      hundun000
    • RE: bot一段时间后不再收到对话消息,且出现Received unknown commandName: StatSvc.QueryHB;

      @rainchan 2.6.1

      发布在 BUG反馈
      H
      hundun000
    • bot一段时间后不再收到对话消息,且出现Received unknown commandName: StatSvc.QueryHB;

      前提:
      使用的是自己写的直接使用mirai-core的程序,同时登陆两个bot(277xxxx622,120xxxx944),两个bot均登陆成功并收发消息了一段时间。

      问题:
      10:02:04起,观察到同一个群里,bot_120xxxx944可以正常收到对话消息(之后也一直正常),而bot_277xxxx622不再收到对话消息:

      只有 2021-06-15 10:02:04 V/Bot 120xxxx944: [群名(群号)] 群员名(群员号) -> 消息
      没有 2021-06-15 10:02:04 V/Bot 277xxxx622: [群名(群号)] 群员名(群员号) -> 消息

      上述现象出现之后bot_277xxxx622的第一次Send: StatSvc.SimpleGet日志:

      19|mirai-s | 2021-06-15 10:02:48 V/Net 277xxxx622: Send: StatSvc.SimpleGet
      19|mirai-s | 2021-06-15 10:02:48 D/Net 277xxxx622: Received unknown commandName: StatSvc.QueryHB
      19|mirai-s | 2021-06-15 10:02:48 V/Net 277xxxx622: Recv: Response(SimpleGet.Response)

      第二次以及之后的每一次Send: StatSvc.SimpleGet日志:

      19|mirai-server | 2021-06-15 10:20:49 V/Net 277xxxx622: Send: StatSvc.SimpleGet
      19|mirai-server | 2021-06-15 10:20:49 D/Net 277xxxx622: Received unknown commandName: StatSvc.QueryHB
      19|mirai-server | 2021-06-15 10:20:49 D/Net 277xxxx622: Received unknown commandName: StatSvc.QueryHB
      19|mirai-server | 2021-06-15 10:20:49 V/Net 277xxxx622: Recv: Response(SimpleGet.Response)

      其Heartbeat.Alive无异常。

      19|mirai-server | 2021-06-15 10:30:21 V/Net 277xxxx622: Send: Heartbeat.Alive
      19|mirai-server | 2021-06-15 10:30:21 V/Net 277xxxx622: Recv: Heartbeat.Alive.Response

      使用PC端qq登录277xxxx622可正常收发消息。

      发布在 BUG反馈
      H
      hundun000
    • RE: 架构设计:抽离出“纯bot逻辑”?

      @him188

      实际上可以考虑只支持 mirai-console,因为 mirai-console 可以像 core 一样嵌入使用?

      我想的是《Mirai生态图》里的“你编写的机器人程序”和“你编写的插件”之间怎么管理。所以保持原图“你编写的机器人程序”只依赖core不依赖console。

      把我的方案放进生态图应该是这样:

      发布在 开发交流
      H
      hundun000
    • RE: 架构设计:抽离出“纯bot逻辑”?

      @nambers 在 架构设计:抽离出“纯bot逻辑”? 中说:

      我一直也打算提出成单独的jar文件
      4. 动态引用需要每个方法都写一次,计划暂时变更为用gradle引入(compile)本地jar包

      我现在是botLogic一个子项目, 作为独立应用的Loader一个子项目,作为Plugin用一个子项目。然后通过gradle 子项目间依赖来使用,开发期间会动态依赖botLogic源码,改了botLogic不需要重新打成jar。

      dependencies {
      implementation project(":botLogic");

      不过这样弄出了gradle子项目关系,就不能照抄mirai教程的gradle写法了,现在我的Plugin子项目刚起步,我还不确定它的mirai相关依赖配置正确没有。

      发布在 开发交流
      H
      hundun000
    • 架构设计:抽离出“纯bot逻辑”?

      我已经写了一个直接用mirai-core作为独立应用启动的项目,准备尝试写它的mirai-console-plugin版本。逐步改造的时候发现,我的项目的架构可能会变成下图所示。

      我的问题是:

      1. “抽离出一个纯bot逻辑模块,其可以同时作为独立应用或者作为插件”是一个好的设计思路吗?
      2. 纯bot逻辑模块使用java,假设图中的适配器和BasePlugin使用kotlin,这样是不是在实践“建议开发插件时混用java和kotlin”?
      3. 基于以上两点,这个设计方案值得作为某种template推广吗?
      发布在 开发交流
      H
      hundun000
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 8 / 8