MiraiForum

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

    hundun000 创建的主题

    • H

      fleet-reminder 定时提醒插件
      插件发布 • • hundun000

      31
      1
      赞同
      31
      帖子
      3935
      浏览

      H

      简介

      插件功能:使bot在预定的时间发送预定的内容。时间和内容可配置。

      下载

      项目地址(含用户使用说明)

      特性

      定时触发的功能,可针对每个群控制启用/禁用

      若一个console里运行了两个bot,加入了同一个群,可控制仅其中一个bot响应本插件,另一个不响应本插件

      cron表达式作为定时条件

      可配置发送:文本、图片、音频

      其他

      我的其他fleet系列整合功能插件(阿米娅插件、欧根插件)也包含定时提醒功能,但功能范围或用法细节略有不同。因为fleet框架可以让不同插件共享功能模块(定时提醒模块是一例),且允许在使用功能模块时做出某些修改。

      本定时提醒插件,目前版本不支持通过命令增删改查定时任务,因为想让本插件走简易方向。

    • H

      umamusume-plugin 赛马娘模拟插件
      插件发布 • • hundun000

      18
      0
      赞同
      18
      帖子
      15430
      浏览

      H

      简介

      模拟游戏《赛马娘》只有坐牢看录像,没有养成

      下载

      项目地址

      功能说明

      从玩家拥有的马中选择一匹,随机匹配对手,然后观看比赛过程。

      比赛过程中若干关键节点的描述(一场比赛约12个关键节点),会间隔一定时长(0.5~2秒,与模拟游戏中的时间间隔正相关)发出一段,以字符画的形式。比赛过程文字描述中的时间,指的是模拟游戏内的时间,总时长约1分半。对应真实世界的总时长约15秒。

      更多功能待开发。

      实际运行效果:

      ...

      5289a25b-efb5-47d1-89ce-ae090522542f-演示_0.jpg
      6172f5f2-f536-46eb-ad65-10c06a09dac1-演示_1.jpg

      准备工作

      本项目提供的是mirai-console插件,用户应自行学习和准备好mirai-console。确保可以在聊天环境执行指令。

      本插件的指令受mirai-console权限系统管理,权限授予说明。指令权限idhundun.mirai.umamusume:command.赛马。

      指令 随机比赛

      随机选择一场比赛,随机选择对手。

      <主指令>: 赛马
      <子指令>: 随机比赛
      <指令参数1>: 玩家所拥有的马的名字

      实际指令演示:

      -> /赛马 随机比赛 特别周001
      <- (若干段描述间隔发送)……

      指定比赛

      指定一场比赛,随机选择对手。

      <主指令>: 赛马
      <子指令>: 指定比赛
      <指令参数1>: 比赛名
      <指令参数2>: 玩家所拥有的马的名字

      实际指令演示:

      -> /赛马 指定比赛 短距离训练场 特别周001
      <- (若干段描述间隔发送)……

      配置文件

      插件载入后会自动在config\hundun.mirai.umamusume\UmaCommand创建默认配置文件UmaConfig.json。

      配置内容简述:

      玩家所拥有的马的详细数据(绘制出的字符画,可在此配置) 候选作为对手的马的详细数据 候选比赛的详细数据

      更详细解释暂无,可(参考《赛马娘》原作游戏)自行理解,尝试调整数值。

    • H

      fleet-amiya 阿米娅插件
      插件发布 • • hundun000

      54
      0
      赞同
      54
      帖子
      9243
      浏览

      H

      简介

      插件功能:使bot扮演角色阿米娅,作为《明日方舟》游戏助手作为和群员的玩耍对象。

      下载

      项目地址

      功能说明

      功能基础说明。对于本插件,文档中的<角色名>代入为阿米娅。

      微博推送 报时与提醒 midi生成 阿米娅闲聊 阿米娅画图 复读、立刻聊天 帮助 权限管理
    • H

      fleet-prinzeugen 独立的舰队collection助手
      插件发布 • • hundun000

      2
      0
      赞同
      2
      帖子
      947
      浏览

      H

      使用

      插件功能:使bot扮演角色欧根,作为舰队collection游戏助手。

      推送微博: 艦colle鎮守府情報(可配置) 事项提醒: 整点报时(可配置) 舰娘百科查询: 舰娘信息(舰娘百科网页链接、改造链、初始装备……) 闲聊

      下载

      更多说明见项目地址

      前身

      欧根,前身是ZacaFleetBot插件里的角色之一,经历了近代化改造,现在单独作为舰队collection助手插件。

      改造的重点内容:

      不再需要mongoDB:持久化数据直接读写文本文件 不再基于Spring:缩小了插件体积,避免Spring与插件体系对接的问题 加强联动console:使用MiraiConsole意义上的指令,使用MiraiConsole权限系统管理

      未来增加更多舰队collection相关的功能,会优先/仅加在本插件。

    • H

      已解决 把Permissions系统用于Command以外的权限控制,需要新的Permittee子类?
      开发交流 • • hundun000

      4
      0
      赞同
      4
      帖子
      843
      浏览

      H

      一般性的,一个插件除了Command为入口的功能,还可能包括其他途径触发的功能:

      Event为入口的功能 由定时器触发的功能

      这些其他途径触发的功能,如果需要做权限控制,或者说服务开关控制,一个方案是自行实现配置文件。如屏蔽消息的思路提到的关闭EventHandler对某个群的服务:

      // onGroupMessage(GroupMessageEvent event) if(this.main.getConfig().isBlackList(sender.getSenderID())) { return; } // do sth

      以及关闭定时器对某个群的服务:

      // on MyTimer run() bot.getGroups().foreach(group -> { if(timerConfig.isBlackList(group .getID())) { return; } // do sth })

      该方案的缺点是需要自行实现和维护多个XXXConfig,需要在文档多个地方说明,增加一个群时涉及多个配置文件……

      故考虑复用Permissions系统,用PermissionId对应EventHandler/Timer的开关,拥有权限则表示启用服务。这样把插件内所有的功能的权限控制/开关,都统一交给Permissions系统,用一份配置文件管理,可动态授权……

      // on init val PERMISSION_A = PermissionService.INSTANCE.register(permissionId("eventHandlerA"), "对应eventHandlerA开关"); val PERMISSION_B = PermissionService.INSTANCE.register(permissionId("timerB"), "对应timerB开关");

      则PermissionService.yml会形如:

      grantedPermissionMap: 'myPlugin:eventHandlerA': - 'g111111' # 表示只有111111群的群员可以使用eventHandlerA 'myPlugin:timerB': - 'g222222' # timerB只定时服务222222群

      EventHandler的判断变为:

      // onGroupMessage(GroupMessageEvent event) Permittee permittee = permitteeFromGroupId(event.getGroupId()); if(!permittee.hasPermission(PERMISSION_A) return; // do sth

      Timer的判断改变为:

      // on MyTimer run() bot.getGroups().foreach(group -> { Permittee permittee = permitteeFromGroupId(group .getID()); if(!permittee.hasPermission(PERMISSION_B) return; // do sth })

      目前的问题是:如何实现permitteeFromGroupId(),重点是返回哪个permittee子类?
      Command为入口已经有了CommandSender;我倾向于Event为入口,由Timer触发也分别有平级的一支子类,然而console文档指出注意:请不要自主实现 Permittee。虽然可以让他们也构造某个CommandSender子类,但毕竟这样的调用确实不是
      来自command,希望能有更合适的方式实现。

    • H

      两个插件内用Spring扫描不同版本依赖中的bean时出错
      开发交流 • • hundun000

      2
      0
      赞同
      2
      帖子
      288
      浏览

      H

      前提:

      第一个插件通过gradle依赖得到了v1版本的hundun.quizgame.core包,最后打出的插件jar的中有:

      GameService通过@Autowired注入成员hundun.quizgame.core.model.match.strategy.MatchStrategyFactory

      8655b09a-eeaf-4163-a5d9-bec97caf64d5-image.png

      第二个插件通过gradle依赖得到了v2版本的hundun.quizgame.core包,最后打出的插件jar的中有:

      GameService通过@Autowired注入成员hundun.quizgame.core.model.domain.match.strategy.MatchStrategyFactory(路径比v1多了domain)

      e7fe66ff-6225-48cb-b936-1baedb91207d-image.png

      问题:

      若两个插件分别放入mirai-console,均正常工作。

      若两个插件同时放入mirai-console, 第二个插件onEnable成功,第一个插件onEnable时报错,报错内容表明它试图寻找v2版本的包路径的MatchStrategyFactory的bean。

      // 这里能看出是第一个插件启动时的报错 E/hundun.zacafleetbot.router: onEnable error: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'amiya': Unsatisfied dependency expressed through field 'quizHandler'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'quizHandler': Unsatisfied dependency expressed through field 'quizService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'gameService': Unsatisfied dependency expressed through field 'matchStrategyFactory'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hundun.quizgame.core.model.domain.match.strategy.MatchStrategyFactory' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 分析

      @ryoii 在 插件里Spring的AnnotationConfigApplicationContext扫描不到bean 中说:

      注意,这个 SpringContext 是否能扫描到插件之外的 Bean 取决与 Mirai Console 的实现

      和这应该不是一回事吧?这里的预期行为是第一个插件使用v1路径的MatchStrategyFactory在插件内找bean,不关心是否能从插件外扫描到v2路径的MatchStrategyFactory。

      这和issue:调整插件类加载策略: 优先加载自己 JAR, 再从全局搜索; 让插件 JAR 携带除 mirai 外所有运行时依赖 是同一个问题吗?

    • H

      mirai-quiz-plugin 答题比赛插件
      插件发布 • • hundun000

      3
      0
      赞同
      3
      帖子
      1570
      浏览

      H

      mirai-quiz-plugin

      Github

      简介

      答题比赛插件。

      功能:

      自由编写题库。题目可包括文本题干、图片。有答题时间限制。 每个题目拥有若干标签。每个队伍可以对标签进行ban、pick。 多种赛制可选。 可分多个队伍参与同一局比赛,比拼得分。 每个队伍选择一个英雄角色。英雄角色可以使用不同技能。 技能可分为:
      瞬时技能:延长倒计时、排除错误选项、跳过本题……
      持续增益:连续答对时获得额外得分……

      使用方式:作为mirai-console-plugin使用

      功能详细介绍

      玩法详细说明

      指令

    • H

      SubCommand未响应群消息,但可响应控制台输入
      开发交流 • • hundun000

      2
      0
      赞同
      2
      帖子
      270
      浏览

      H

      以前只开发过ListenerHost,第一次开发Command。

      在mirai-console文档示例有:

      @OptIn(ConsoleExperimentalAPI::class) object MyCompositeCommand : CompositeCommand( MyPluginMain, "manage", // "manage" 是主指令名 description = "示例指令", permission = MyCustomPermission, // prefixOptional = true // 还有更多参数可填, 此处忽略 ) { // [参数智能解析] // // 在控制台执行 "/manage <群号>.<群员> <持续时间>", // 或在聊天群内发送 "/manage <@一个群员> <持续时间>", // 或在聊天群内发送 "/manage <目标群员的群名> <持续时间>", // 或在聊天群内发送 "/manage <目标群员的账号> <持续时间>" // 时调用这个函数 @SubCommand // 表示这是一个子指令,使用函数名作为子指令名称 suspend fun CommandSender.mute(target: Member, duration: Int) { // 通过 /manage mute <target> <duration> 调用 …………

      我已经写了CommandManager.INSTANCE.registerCommand();,故我已经可以在控制台使用我的SubCommand了。若想实现注释里说的“聊天群内发送 XXX 时调用这个函数”,还需要做什么工作呢?我没有在文档里看到。

      我了解到或许以下方案可以做到:

      使用chat-command插件 在消息事件监听中执行命令。

      然而我预期的是,只需要一行代码来声明"这个Command需要响应群消息"。这样的功能存在吗(因为按我的理解这是Command的最常用用法,或是我理解有误)?

    • H

      ExternalResource实例close()以后依然能多次使用?
      开发交流 • • hundun000

      2
      0
      赞同
      2
      帖子
      201
      浏览

      H

      主项目的代码里,预期一直使用的ExternalResource实例,每次使用后就执行了close(),但是实际上依然能多次使用这个实例。这个现象正常吗?对于预期一直使用的ExternalResource实例,正确做法是不close()是吧?

      写进了demo项目来复现演示:DemoBotLogic的成员demoExternalResource仅初始化一次。每次onMessage时就执行close()。

      public class DemoBotLogic implements ListenerHost { JvmPlugin plugin; ExternalResource demoExternalResource; ………… public DemoBotLogic(JvmPlugin plugin) { this.plugin = plugin; ………… demoExternalResource = ExternalResource.create(plugin.resolveDataFile("demo.png")); } @NotNull @EventHandler public ListeningStatus onMessage(@NotNull GroupMessageEvent event) throws Exception { // test close ExternalResource every time if (event.getMessage().contentToString().equals("test ExternalResource")) { Image image = event.getGroup().uploadImage(demoExternalResource); try { demoExternalResource.close(); } catch (IOException e) { plugin.getLogger().error("Image externalResource.close error" + e.getMessage()); } event.getGroup().sendMessage(image); } return ListeningStatus.LISTENING; } }

      07157f3e-8285-4e95-b6e1-e335c2204ea4-image.png

      mcl日志也没有报"Image externalResource.close error",就算是执行close()成功了吧。

    • H

      ZacaFleetBot 明日方舟游戏助手+舰队收藏游戏助手+More
      插件发布 • • hundun000

      24
      3
      赞同
      24
      帖子
      4526
      浏览

      H

      ZacaFleetBot

      Github

      release

      简介

      插件功能:该插件可配置bot在不同Q群扮演不同角色,只提供指定范围的功能(一些通用功能+该角色的特色功能)。目标是同时为多个群提供差异化服务,易配置,易裁剪或拓展。

      有两种使用方式,选这其中一种即可使用:

      方式一:作为mirai-console-plugin使用 方式二:作为独立应用使用【暂不开放】

      依赖服务:mirai框架、微博api、企鹅物流api、舰娘百科api

      【最新角色和指令以github文档为准,以下介绍可能落后】

      角色及其功能简介 阿米娅

      《明日方舟》游戏角色。特色功能为明日方舟游戏助手。

      推送微博: 明日方舟、朝陇山 企鹅物流数据查询 事项提醒: 预设的整点报时、用户新增定时提醒 闲聊: 戳一戳、提醒还不能下班…… 快速查询: PRTS网页链接、一图流网页链接…… 一站到底答题 欧根

      《舰队收藏》游戏角色。特色功能为舰队收藏游戏助手。

      推送微博: 艦colle鎮守府情報 事项提醒: 预设的整点报时、用户新增定时提醒 快速查询: 舰娘信息(舰娘百科网页链接、改造链、初始装备……) ZACA娘

      原创角色。实验性的通用功能一般会放在这里。

      推送微博: 华工ZACA动漫协会 日文小工具: 日文汉字注音 一站到底答题 猫猫

      实验性角色。未来可能作为二次开发新角色的模板。

      功能详细介绍

      如前文所述,每个角色有特定的可用指令范围。下面列出的所有指令,并非任意角色都能使用。

      本章的指令示例将以如下格式给出:

      -> 这是一句指令示例
      <- 这是bot对该指令的回复示例

      2.1 第一类指令——调用某个子指令

      语法:
      <角色名><子指令> <指令参数列表>
      或
      <角色名> <子指令> <指令参数列表>

      实验性功能:为了加强角色扮演感,对于同一个子指令功能,不同的角色可能通过不同的“子指令称呼”调用。

      2.1.1 微博相关指令

      查看最近一条微博的发布时间

      <子指令>: 查看最新微博

      -> ZACA娘查看最新微博

      实验性功能:

      对于角色阿米娅,变为 <子指令>: 看看饼

      -> 阿米娅看看饼

      对于角色欧根,变为 <子指令>: 查看镇守府情报

      -> 欧根查看镇守府情报

      2.1.2 企鹅物流数据相关指令 查询物品掉率

      查看某个物品的在所有地图里掉落率最高的几项。

      <子指令>: 查掉率
      <指令参数列表>: 物品名

      -> 阿米娅查掉率 固源岩

      查询作战

      查看某个作战的理智消耗,掉落等信息。

      <子指令>: 查作战
      <指令参数列表>: 作战id

      -> 阿米娅查作战 1-7

      刷新缓存

      拉取最新的企鹅物流信息数据。

      <子指令>: 更新企鹅物流

      -> 阿米娅更新企鹅物流

      2.1.3 事项提醒相关指令 创建提醒

      提醒任务指的是在满足时间条件的时候发送指定消息。

      <子指令>: 创建提醒
      <指令参数列表>[0]: 时间条件-月。-1表示不限制。
      <指令参数列表>[1]: 时间条件-日。-1表示不限制。
      <指令参数列表>[2]: 时间条件-星期数。-1表示不限制。
      <指令参数列表>[3]: 时间条件-时。-1表示不限制。
      <指令参数列表>[4]: 时间条件-分。-1表示不限制。
      <指令参数列表>[5]: 执行次数条件。-1表示不限制。
      <指令参数列表>[6]: 消息内容

      -> 阿米娅创建提醒 5 1 -1 9 0 1 限时活动将于10点结束,博士请确认限时活动任务完成状态。 //这条消息将在5月1日(不论是星期几)9点0分时被bot自动发送。执行一次后失效。

      -> 阿米娅创建提醒 -1 -1 7 22 30 -1 博士请确认周常任务完成状态。 //这条消息将在周日(不论是几月几日)22点30分时被bot自动发送。可执行无限次。

      查看提醒

      查看已创建的提醒任务。

      <子指令>: 查看提醒

      -> 阿米娅查看提醒

      移除提醒

      移除指定id的提醒任务。

      <子指令>: 移除提醒
      <指令参数列表>: 提醒id。由查看提醒得到。

      -> 阿米娅移除提醒 29b88b93-89e2-4a3f-8ff2-b35ab13672d3

      2.2 第二类指令——快速查询

      语法:
      <参数>.

      语法尽量简短,用于每个群里最常用到的查询。

      2.2.1 阿米娅的快速查询 <参数> 回复 PRTS 或 prts PRTS首页 一图流 一图流网站 绿票一图流 绿票一图流网站 企鹅物流 企鹅物流首页

      -> prts. //得到PRTS首页链接
      <- http://prts.wiki/w/首页

      2.2.2 欧根的快速查询 <参数> 回复 任意 舰娘信息(数据来自kcwiki)

      -> 吹雪.
      <- 吹雪 https://zh.kcwiki.cn/wiki/吹雪
      吹雪驱逐舰
      -20级->吹雪改[驱逐舰]
      -70级->吹雪改二[驱逐舰]

      3. 闲聊

      当群员的发言不满足该角色的任意一个指令语法,即为一句闲聊。角色也会在满足条件的情况下做出回复。

      3.1 复读机

      当群里连续3句发言相同时(包括发送相同表情/图片),角色也会回复一次该发言。

      3.2 阿米娅的闲聊 当群员发言里包含“下班”,根据是否是工作时间(周一至周五9点至17点),阿米娅会做不同回复。 当群员发言里包含“damedane”,阿米娅会播放音频。 戳一戳阿米娅或特定群员,阿米娅会发送特定的图片。 3.3 欧根的闲聊 当群员发言里包含“噗噗”,欧根会发送特定的图片。 4. 非主动功能

      指的是不由用户发言触发的功能。

      微博推送 预设的整点报时 用户创建的事项提醒满足时间条件
    • H

      插件里Spring的AnnotationConfigApplicationContext扫描不到bean
      开发交流 • • hundun000

      13
      0
      赞同
      13
      帖子
      787
      浏览

      H

      mirai 2.6.7。
      (一个位于com.hundun.mirai.bot.core包的类)使用以下代码创建ApplicationContext并扫描com.hundun.mirai.bot包,打印beans的名字。

      AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); context.scan("com.hundun.mirai.bot"); context.refresh(); console.getLogger().info("ApplicationContext created, has beans = " + Arrays.toString(context.getBeanDefinitionNames()));

      IDE单元测试里加载插件,可以扫到com.hundun.mirai.bot里的beans:
      3ca90bde-9388-4e20-bb82-6f4fb108fe47-image.png

      buildPlugin以后放入mcl,启动后扫不到com.hundun.mirai.bot里的beans:
      47015b15-d522-4661-856d-b32ddc7b5d64-image.png

      确认插件jar里com.hundun.mirai.bot包内容正常:
      287f18cd-f9a1-430e-a9c2-cb80a9a3d986-image.png

    • H

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

      6
      0
      赞同
      6
      帖子
      564
      浏览

      H

      使用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

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

      7
      0
      赞同
      7
      帖子
      497
      浏览

      H

      前提:
      使用的是自己写的直接使用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可正常收发消息。

    • H

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

      12
      0
      赞同
      12
      帖子
      989
      浏览

      H

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

      我的问题是:

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