MiraiForum

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

    有没有什么办法自定义插件回复的触发语句呢?

    使用交流
    4
    11
    914
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • X
      xiaojiedev 最后由 xiaojiedev 编辑

      有一些使用chat-command的插件,可以在聊天里发送以斜杠“/”开头的指令来调用一些功能。
      但是我想自定义这些功能的触发语句该怎么办呢?有没有解决方法?因为我感觉打斜杠不太方便,或者觉得这样触发太生硬。

      比如Arknights Helper插件,我想把“/公招 狙击干员 群攻”改为“狙击干员和群攻有什么?”,让这两句话都可以触发一样的功能。

      想要实现这个,我首先想到的是“铃心自定义”插件的“【重发】”变量,铃心自定义官方文档如下

      >调用回复<
      【重发XXX】填写在回复中,触发后相当于机器人再次收到内容为XXX的消息。(发送者/群组 不变)。重发后的消息不受各类开关限制。等重发的内容处理完毕才继续执行。
      【重发[RD:QQ]XXX】 重发重定向。将发送者重定向为QQ,请带上[]。
      【线程重发XXX】 同【重发】,只是该重发将启动新的线程,不再等待重发完毕才继续执行。
      重发屏蔽: 即重发指令只执行命令不实施发送消息,具体指令【重发屏蔽xxx】  【线程重发屏蔽xxx】。
      

      只可惜“铃心自定义”是一款古早的插件,不能在Mirai下原生运行,只能在Mirai Native下运行(我个人理解为“兼容模式”),这导致了“【重发】”这个变量测试失效了,我的这个想法实现不了。

      各位有没有更好的方案?求大神qwq

      Nambers 1 条回复 最后回复 回复 引用 0
      • Nambers
        Nambers 摸鱼 最后由 编辑

        你没准可以自己写个插件自动在每条信息前加\, 然后调用指令 https://docs.mirai.mamoe.net/console/Commands.html#在-commandmanager-执行指令 , 然后屏蔽一下失败(不匹配)的输出就行了

        X 1 条回复 最后回复 回复 引用 0
        • H
          hundun000 ⭐2021⭐ 最后由 hundun000 编辑

          方案1: 找一个类似铃心自定义插件的插件,能通用地自定义重发,配合任意目标插件使用。(看来目前没有)

          方案2:直接向目标插件开发者提议,新增功能,支持你所说的第二种表达。不过这应该涉及较大的代码架构改动,可以让大家先讨论这类表达方式的需求,未来开发新插件时,考虑一开始就设计成支持两种表达方式。

          我曾经也在架构设计-抽离出-纯bot逻辑提过一些想法,对应写出了zacafleetbot插件,其支持指令语法是:

          阿米娅查掉率 固源岩

          这比较接近你所说的“不那么生硬”的语法吧?不过由于种种原因(详见zacafleetbot插件原帖),该插件不再维护了。

          整理了一下我想到的,如果插件设计成支持两种表达方式,大概会是如下关系,可能可以作为社区的参考:

          X 1 条回复 最后回复 回复 引用 0
          • Nambers
            Nambers 摸鱼 最后由 编辑

            其实mirai好像有个属性a2949bf1-0d97-4150-b527-2972cf679d69-1639454117(1).jpg

            H 1 条回复 最后回复 回复 引用 0
            • H
              hundun000 ⭐2021⭐ @Nambers 最后由 编辑

              @nambers 这看起来是指从“/公招 狙击干员 群攻”变为还支持“公招 狙击干员 群攻”?

              Nambers 1 条回复 最后回复 回复 引用 0
              • Nambers
                Nambers 摸鱼 @hundun000 最后由 编辑

                @hundun000 喔确实,没审题了(

                tsudzuki 1 条回复 最后回复 回复 引用 0
                • Nambers
                  Nambers 摸鱼 @xiaojiedev 最后由 编辑

                  @xiaojiedev
                  正好有点时间,就去做了一个
                  https://github.com/Nambers/Mirai-Resend
                  没有经过很完善的测试(

                  1 条回复 最后回复 回复 引用 0
                  • tsudzuki
                    tsudzuki 摸鱼 @Nambers 最后由 tsudzuki 编辑

                    @nambers 说实话没太看懂(
                    好像又看懂了

                    Nambers 1 条回复 最后回复 回复 引用 0
                    • Nambers
                      Nambers 摸鱼 @tsudzuki 最后由 编辑

                      @tsudzuki 就是他发的那个插件类似功能(

                      >调用回复<
                      【重发XXX】填写在回复中,触发后相当于机器人再次收到内容为XXX的消息。(发送者/群组 不变)。重发后的消息不受各类开关限制。等重发的内容处理完毕才继续执行。
                      
                      1 条回复 最后回复 回复 引用 0
                      • X
                        xiaojiedev @Nambers 最后由 xiaojiedev 编辑

                        @nambers 感谢大大帮助!如果需要让我研究Mirai的文档,自己写插件,那就只能暂缓考虑了哈哈!因为我是初学的Java苦手,做简单的Java课设实验还犯愁(上个月的事)。

                        其实您展示的Mirai prefixOptional (指令前缀可选) 属性也可以满足一部分需求了。虽然没有 重发插件 那样灵活,但是不用打斜杠,体验还是可以上升一个档次的。

                        最后再谢谢提供插件~拜读代码,安装测试中……

                        1 条回复 最后回复 回复 引用 0
                        • X
                          xiaojiedev @hundun000 最后由 xiaojiedev 编辑

                          @hundun000 感谢大大提供的方案——
                          我认为/<指令> <指令>这种形式还是咱bot开发者/搭建者调试的时候用比较合适。
                          如果用户能用 自然语言 来 触发回复 会比较好,挺希望插件开发者能考虑 “设计成支持两种表达方式” 的。
                          就好像 tb 和 jd 的电商客服机器人,虽然是固定回复,很蠢萌,大多情况下没什么用,但是交互的时候,也不需要用户打斜杠对吧XD

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