MiraiForum

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

    lc6a 创建的主题

    • lc6a

      SpringMirai 集成mirai-console的可自定义可扩展kotlin机器人开发框架/启动器
      其他项目发布 • 插件加载 springmirai mirai-console 框架 启动器 • • lc6a

      8
      0
      赞同
      8
      帖子
      1087
      浏览

      lc6a

      类Spring的开发体验 控制器、拦截器、类AOP处理器 99%的功能可自定义 具备mirai-console所有功能 包含Web管理端,因此可以视为继mcl、mirai-compose后又一个启动器

      github仓库地址

      gitee仓库地址

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

      概览

      机器人管理

      功能管理

      过滤

      功能控制面板

      插件管理

      插件控制面板

    • lc6a

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

      4
      0
      赞同
      4
      帖子
      405
      浏览

      lc6a

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

      @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

      2
      0
      赞同
      2
      帖子
      274
      浏览

      lc6a

      我的主函数如下:

      fun main(args: Array<String>) { runArgs = args MiraiConsoleTerminalLoader.startAsDaemon() SpringMiraiStartPlugin.load() SpringMiraiStartPlugin.enable() }

      插件数据定义如下:

      @Component class PermissionDao @Autowired constructor(config: Config): AutoSavePluginData("permission") { val permissions: MutableMap<Long, MutableList<String>> by value() private val logger = LoggerFactory.getLogger(PermissionDao::class.java) init { val root = config.rootUserId initKey(root); if (permissions[root].isNullOrEmpty()) { logger.warn("当前没添加root用户权限,自动添加中") permissions[root]!!.add(PermissionService.root) } } }

      虽然数据在内存中没有任何问题,但不会持久化到文件(data目录下甚至没有这个插件的目录)。
      是我操作不对还是说需要额外进行处理?如何处理?

    • lc6a

      哭了,mirai官网竟然会算查重
      摸鱼区 • • lc6a

      6
      0
      赞同
      6
      帖子
      781
      浏览

      lc6a

      0WZQ0S~L5.jpg

    • lc6a

      Mirai是否有转到gitee开发的打算?
      开发交流 • • lc6a

      5
      0
      赞同
      5
      帖子
      575
      浏览

      lc6a

      如今github有时访问比较困难,因此想问一下Mirai官方是否会切换到其他git平台?或者是始终以github为主?

    • 1 / 1