MiraiForum

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

    YamlBot - 基于yaml配置的指令编写插件

    插件发布
    kotlin yaml 自定义
    4
    21
    2481
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • PigeonYuze
      PigeonYuze 最后由 编辑

      YamlBot

      https://github.com/PigeonYuze/YamlBot

      一个基于mirai自带的config中的yaml配置以开发指令的插件

      由于yaml对空格的敏感 在出现相关保存时,请检查您的配置文件是否正确

      同时插件中的部分功能需要ffmpeg的支持,您可以选择性地选择是否加入该功能(调用上传语音相关功能时会自动将.mp3格式转换为silk)

      详细内容可查看readme中的介绍

      以一言为例
      你可以通过以下的yaml代码

      # 指令处理
      COMMAND: 
        - name: 
            - '/hikokoto'
            - 一言
          answeringMethod: QUOTE
          answerContent: '『 %call-hitokoto% 』 —— %call-from%'
          run: 
            - use: HTTP
              call: content
              args: 
                - 'https://v1.hitokoto.cn'
              name: content
            - use: BASE
              call: parseJson
              args: 
                - '%call-content%'
                - hitokoto
              name: hitokoto
            - use: BASE
              call: parseJson
              args: 
                - '%call-content%'
                - from
              name: from
      

      实现以下的效果
      d810e081-a701-4a6e-a1cf-3e4b5b9868ea-image.png

      以上功能在插件成功加载后会自动生成

      另,您所编写的指令可以上传至your-config 以功能-原名的格式上传您的代码

      年轻人的第一个插件何止是瑟图插件

      1 条回复 最后回复 回复 引用 1
      • καθαρά
        καθαρά 最后由 编辑

        只有注册用户后才能使用指令吗?怎么注册用户呢?

        PigeonYuze 1 条回复 最后回复 回复 引用 0
        • PigeonYuze
          PigeonYuze @καθαρά 最后由 编辑

          @καθαρά 并不是这样的 用户系统是这个插件自带的一个小功能 指令的调用与用户系统无关

          καθαρά 1 条回复 最后回复 回复 引用 0
          • καθαρά
            καθαρά @PigeonYuze 最后由 编辑

            @PigeonYuze 额,那我发送触发词既没有报错bot也没有任何回复是什么原因呢?我用的就是您给出的例子

            PigeonYuze 2 条回复 最后回复 回复 引用 0
            • PigeonYuze
              PigeonYuze @καθαρά 最后由 PigeonYuze 编辑

              @καθαρά 你可以把你发送的信息发一下吗 我现在重新测试看看,如果可以的话也麻烦你发一下CommangReg.yml的信息,谢谢!

              καθαρά 2 条回复 最后回复 回复 引用 0
              • καθαρά
                καθαρά @PigeonYuze 最后由 编辑

                @PigeonYuze /hikokoto

                1 条回复 最后回复 回复 引用 0
                • καθαρά
                  καθαρά @PigeonYuze 最后由 编辑

                  此回复已被删除!
                  1 条回复 最后回复 回复 引用 0
                  • καθαρά
                    καθαρά 最后由 编辑

                    @καθαρά

                    # 指令处理
                    '''
                    COMMAND: 
                      - # 指令的全称 使用者在发出该内容后会触发指令 (使用contentToString比较)
                        name: 
                          - test
                        # 回复的方式 可选为QUOTE,SEND_MESSAGE,AT_SEND
                        # QUOTE 为回复信息
                        # SEND_MESSAGE 为直接发送信息
                        # AT_SEND 为at发送者后发送信息
                        answeringMethod: QUOTE
                        # 回答的内容
                        # 可提供%call-value%调用参数 (详细可见 readme.md 所标注的方法)
                        answerContent: "hello,world!\nthis is a test message!"
                        # 会同时执行的操作 如有需要调用参数 需要在此处进行编写
                        # 详细可见 readme.md
                        run: []
                        # 运行还需要的额外条件(该项暂时没有用 因为还没有写好的返回布尔值的内容)
                        # 若无需条件请使用以下内容:
                        # - request: none
                        # call: null
                        # runRequest: false
                        condition: 
                          - # 选择判断的类型 无需判断传值 none
                            request: none
                            # 提供此处获取Boolean
                            call: null
                      - # 指令的全称 使用者在发出该内容后会触发指令 (使用contentToString比较)
                        name: 
                          - '/hikokoto'
                        # 回复的方式 可选为QUOTE,SEND_MESSAGE,AT_SEND
                        # QUOTE 为回复信息
                        # SEND_MESSAGE 为直接发送信息
                        # AT_SEND 为at发送者后发送信息
                        answeringMethod: QUOTE
                        # 回答的内容
                        # 可提供%call-value%调用参数 (详细可见 readme.md 所标注的方法)
                        answerContent: '『 %call-hitokoto% 』 —— %call-from%'
                        # 会同时执行的操作 如有需要调用参数 需要在此处进行编写
                        # 详细可见 readme.md
                        run: 
                          - # 使用的包 可选USER,BASEM,HTTP,MIRAI
                            use: HTTP
                            # 调用的函数名
                            call: content
                            # 传参
                            args: 
                              - 'https://v1.hitokoto.cn'
                            # 命名
                            name: content
                          - # 使用的包 可选USER,BASEM,HTTP,MIRAI
                            use: BASE
                            # 调用的函数名
                            call: parseJson
                            # 传参
                            args: 
                              - '%call-content%'
                              - hitokoto
                            # 命名
                            name: hitokoto
                          - # 使用的包 可选USER,BASEM,HTTP,MIRAI
                            use: BASE
                            # 调用的函数名
                            call: parseJson
                            # 传参
                            args: 
                              - '%call-content%'
                              - from
                            # 命名
                            name: from
                        # 运行还需要的额外条件(该项暂时没有用 因为还没有写好的返回布尔值的内容)
                        # 若无需条件请使用以下内容:
                        # - request: none
                        # call: null
                        # runRequest: false
                        condition: 
                          - # 选择判断的类型 无需判断传值 none
                            request: none
                            # 提供此处获取Boolean
                            call: null
                    
                    1 条回复 最后回复 回复 引用 0
                    • PigeonYuze
                      PigeonYuze @καθαρά 最后由 编辑

                      @καθαρά 奇怪了,我这里复现失败欸,你确定你的bot成功登录或者是bot成功接受到信息了吗

                      καθαρά 2 条回复 最后回复 回复 引用 0
                      • καθαρά
                        καθαρά @PigeonYuze 最后由 编辑

                        @PigeonYuze 确实登录并接收到了啊,我设置的复读插件都回复了

                        1 条回复 最后回复 回复 引用 0
                        • καθαρά
                          καθαρά @PigeonYuze 最后由 编辑

                          @PigeonYuze 刚才重启了一下mcl,又可以用了(

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

                            新增每日一图的示例,使用最新版本将git仓库内your-config/bingimage-Command.yml的COMMAND内容接在config/.../CommandReg.yml内即可使用

                            image.png

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

                              这插件感觉好像凉了()
                              真的有人用吗(

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

                                来试试

                                1 条回复 最后回复 回复 引用 0
                                • 彼
                                  彼岸星辰beta 最后由 编辑

                                  很好的功能,感觉有了监听之后那就能简单的开发更多功能了。

                                  1 条回复 最后回复 回复 引用 0
                                  • 彼
                                    彼岸星辰beta 最后由 编辑

                                    最新的release里两个jar有什么区别,大小差那么多。

                                    PigeonYuze 1 条回复 最后回复 回复 引用 0
                                    • PigeonYuze
                                      PigeonYuze @彼岸星辰beta 最后由 编辑

                                      @彼岸星辰beta mirai.jar是为旧版本的mirai构建的包,里面一同打包了所需要的所有依赖
                                      而mirai2.jar是新版本mirai的功能,它在被mirai-console加载后会自行下载依赖至对应的lib文件夹内,防止包使用的重复带来了不必要的存储空间占用
                                      一般来说下载mirai2.jar就可以了
                                      真的会有人现在还在用mirai 1.x 吗?

                                      1 条回复 最后回复 回复 引用 0
                                      • 彼
                                        彼岸星辰beta 最后由 编辑

                                        趁你放假了,IsPrefixForAll 好像没有反应,等会我整理下发个示例去GH,有空康康。

                                        PigeonYuze 1 条回复 最后回复 回复 引用 0
                                        • 彼
                                          彼岸星辰beta 最后由 编辑

                                          并且还有奇怪的bug,如果设置args分割符为空(不是空格),凡是以天气开头的词都算是命令,即天气=天气上海,会要求输入指令,天气 上海=查上海天气。

                                          PigeonYuze 1 条回复 最后回复 回复 引用 0
                                          • PigeonYuze
                                            PigeonYuze @彼岸星辰beta 最后由 PigeonYuze 编辑

                                            @彼岸星辰beta 这个是新加的特性,不是bug
                                            触发条件是argSize为1 argSpilt为""
                                            你可以看一下这个pr

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