MiraiForum

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

    SubCommand未响应群消息,但可响应控制台输入

    开发交流
    2
    2
    258
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • H
      hundun000 ⭐2021⭐ 最后由 编辑

      以前只开发过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的最常用用法,或是我理解有误)?

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

        使用chat-command插件

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