MiraiForum

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

    lc6a

    @lc6a

    3
    声望
    3
    资料浏览
    27
    帖子
    0
    粉丝
    1
    关注
    注册时间 最后登录

    lc6a 取消关注 关注

    lc6a 发布的最佳帖子

    • RE: 使用mirai-core开发的项目能同时使用现成的插件吗

      能!不过不是特别建议,我目前做过这种项目,实现方式是在你的项目中添加mirai-console相关依赖并手动启动mirai-console或者手动加载插件。

      发布在 开发交流
      lc6a
      lc6a
    • RE: 大佬们,怎么在聊天里使用指令?

      @zhou2008 在 大佬们,怎么在聊天里使用指令? 中说:

      那能不能把/help里的其他东西去掉,只保留插件的?

      c253fa70-29d2-4657-a512-abd060e904b3-image.png
      根据源码,如果你不想显示某些命令,可以从权限入手,如果你没有某个指令的权限,应该就不会显示这个指令

      发布在 开发交流
      lc6a
      lc6a
    • RE: 大佬们,怎么在聊天里使用指令?

      需要chat-command插件,如果没有该插件,指令只在控制台有效,即使有这个插件,还需要先分配权限。

      发布在 开发交流
      lc6a
      lc6a

    lc6a 发布的最新帖子

    • RE: SpringMirai 集成mirai-console的可自定义可扩展kotlin机器人开发框架/启动器

      版本更新:2.11.1-dev1,更新mirai版本到2.11.1。
      https://github.com/lc6a/spring_mirai/releases/tag/2.11.1-dev

      发布在 其他项目发布
      lc6a
      lc6a
    • RE: 插件里Spring的AnnotationConfigApplicationContext扫描不到bean

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

      @hundun000 你好,我也是使用Spring框架做机器人项目,我比较好奇你打包的jar包具体内容。能否发一份你打包的使用Spring的插件jar包?如果你当前项目不方便公布的话,能否用spring写个hello world的插件,然后打包发我一份?如果论坛不方便发送的话,我QQ1952511149。非常感谢!

      我之前打算解决这个问题的,被一些事情耽搁了。你如果能顺便提供源码就更好了,我可能会尝试解决此问题。如果我解决了,我可以跟你分享分享。

      发布在 开发交流
      lc6a
      lc6a
    • RE: 插件里Spring的AnnotationConfigApplicationContext扫描不到bean

      @hundun000 你好,我也是使用Spring框架做机器人项目,我比较好奇你打包的jar包具体内容。能否发一份你打包的使用Spring的插件jar包?如果你当前项目不方便公布的话,能否用spring写个hello world的插件,然后打包发我一份?如果论坛不方便发送的话,我QQ1952511149。非常感谢!

      发布在 开发交流
      lc6a
      lc6a
    • RE: SpringMirai 集成mirai-console的可自定义可扩展kotlin机器人开发框架/启动器

      @liujiahua123123 不好意思,写的时候没有过多考虑,确实不妥,目前已经修改。如果还有其他存在问题,可以提ISSUE,我会第一时间处理。

      发布在 其他项目发布
      lc6a
      lc6a
    • RE: SpringMirai 集成mirai-console的可自定义可扩展kotlin机器人开发框架/启动器

      刚刚添加了自动接受加好友、加群的功能,并且挂了一个机器人在服务器。
      大家可以加我的机器人为好友或者拉我的机器人去你们的群玩耍,账号:2120906525
      有什么好玩的插件想要该机器人加载都可以分享,帮忙代挂机器人也是可以的,也欢迎大家交流开发经验。

      发布在 其他项目发布
      lc6a
      lc6a
    • RE: 架构设计:抽离出“纯bot逻辑”?

      可以看看我的拙作:

      https://mirai.mamoe.net/topic/317/springmirai-集成mirai-console的可自定义可扩展kotlin机器人开发框架-启动器

      不过目前结构也存在一些问题,有重构的打算。
      如果你也是基于springboot开发,欢迎交流经验!
      我认为:

      1. 可以对设计进行分层次抽象,例如分为jvm全局、插件级别、指令级别3层。
      2. 定义过滤器模块,可以编写一个个过滤器,各过滤器可以设计为独立平等关系,也可设置为层级关系(例如伪代码:过滤器AtMeFilter(true)的前提是过滤器EventFilter(MessageEvent::class)),但过滤器最好不直接跟机器人功能耦合,提供默认绑定关系即可,应该让用户能够运行时动态绑定、解绑过滤器与功能(点名批评自己的框架,使用注解将过滤器和功能静态绑定,无法动态更改)。
      3. 定义机器人功能模块,仅仅包含机器人逻辑,数据来源由框架提供(参数注入),消息发送也抽象隔离开。
      4. AOP,面向切面编程能够方便的在机器人逻辑前后添加通用逻辑,例如返回值如何作为消息发送回去。
      5. 至于同时维护基于core和mirai-console的两个版本,我觉得Him188大佬说得对,直接将mirai-console作为依赖添加到项目即可,项目提供main和plugin两个入口,我的SpringMirai项目就是这样做的。
      发布在 开发交流
      lc6a
      lc6a
    • SpringMirai 集成mirai-console的可自定义可扩展kotlin机器人开发框架/启动器
      • 类Spring的开发体验
      • 控制器、拦截器、类AOP处理器
      • 99%的功能可自定义
      • 具备mirai-console所有功能
      • 包含Web管理端,因此可以视为继mcl、mirai-compose后又一个启动器

      github仓库地址

      gitee仓库地址

      放几个截图:
      f0231ef1-4050-4794-ada3-78cb4c09065c-image.png

      概览

      机器人管理

      功能管理

      过滤

      功能控制面板

      插件管理

      插件控制面板

      发布在 其他项目发布
      lc6a
      lc6a
    • RE: 如何获取在mirai-console命令行输入的原始命令

      查看源码发现可以用变长参数或者数组来实现变相还原内容:

          @Handler
          fun CommandSender.handle(vararg args: String) {
              val command = buildString { args.forEach { append(it).append(' ') } }.trimEnd()
              execSmCommand(command) {
                  runBlocking {
                      sendMessage(it)
                  }
              }
          }
      
      发布在 开发交流
      lc6a
      lc6a
    • RE: 如何获取在mirai-console命令行输入的原始命令

      3种指令都试过。。。

      发布在 开发交流
      lc6a
      lc6a
    • 如何获取在mirai-console命令行输入的原始命令

      我有另外一套指令体系,我想注册一个指令来执行那个体系的指令,代码如下:

      @Component
      class SmCommandInvoker: RawCommand(
          SpringMiraiStartPlugin, primaryName,
          description = "执行SpringMirai指令"
      ) {
      
          companion object {
              private const val primaryName = "sm"
          }
      
          override suspend fun CommandSender.onCommand(message: MessageChain) {
              val command = message.content.substringAfter(primaryName).trimStart()
              val logger = MiraiLogger.create("sm")
              logger.info("message: ${message.content}")
              logger.info("command: $command")
              execSmCommand(command) {
                  runBlocking {
                      sendMessage(it)
                  }
              }
          }
      }
      

      其中execSmCommand定义如下:

      /**
       * 执行sm指令
       * @param line 一行指令
       * @param fn 需要回复消息时的回调
       */
      fun execSmCommand(line: String, fn: (String) -> Unit)
      

      输出如下:

      > /sm 权限 我的权限
      2021-06-17 23:54:05 I/stdout: 2021-06-17 23:54:05.925  INFO 12568 --- [atcher-worker-2] sm  : message: 权限我的权限
      2021-06-17 23:54:05 I/stdout: 
      2021-06-17 23:54:05 I/stdout: 2021-06-17 23:54:05.925  INFO 12568 --- [atcher-worker-2] sm  : command: 权限我的权限
      2021-06-17 23:54:05 I/stdout: 
      

      很显然,“权限”和“我的权限”之间的空格被去掉了,而在我的指令体系中必须要这个空格,所以导致我的指令无法正确运行,请问如何解决此问题?

      发布在 开发交流
      lc6a
      lc6a