MiraiForum

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

    人类的本质:使用 JetBrains MPS 编写的不完全 Mirai 自定义语言 "IDE"

    其他项目发布
    jetbrains mps jvm core ide
    6
    15
    1143
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • G
      Geno1024 摸鱼 最后由 Geno1024 编辑

      这是一个刚刚实现了一点基础功能的项目,绝大多数功能仍未实现,请轻拍。
      话说后续帖子能更新的吧?


      “人类的本质”是一个使用 JetBrains MPS 编写的使用 Mirai 作为对接 QQ 的“后端通信接口”的自定义语言 IDE。

      目前开源于 GitHub: Geno1024/com.geno1024.chatbot。

      前情摘要:https://mirai.mamoe.net/topic/143

      功能

      由于刚刚重写没几天,因此绝大多数功能仍然未实现。预想中与实现了的功能列表可查看项目 Readme。简单描述如下:

      1. 启动时发送纯文本信息(已实现)与图片。
      2. 当收到的群聊或私聊信息匹配到关键词(已实现)或与关键词完全相同(已实现)之后发送纯文本信息(已实现)与图片。
        1. 关键词的匹配可以使用作用域区分来源(已实现)。
      3. 定时发送纯文本信息与图片。
        1. 前三点所述的“纯文本信息与图片”的来源可以是写死的固定字符串(已实现),也可以是一段以发送者与内容为输入的 Java 程序的返回 string(曾实现过),也可以是调用某个外部程序之后获得的标准输出。
      4. 全局冷却时间(已实现)与黑名单(已实现)。
      5. 从 JetBrains MPS 构建一个该自定义语言的 IDE 或 IntelliJ IDEA 插件。
      6. 使用 Gradle 自动构建该自定义语言的 IDE 或 IntelliJ IDEA 插件。

      其他更加复杂的功能尚未安排、尚未学习或尚未遇到。

      Screenshot_20220703_120122.png

      使用方式

      请阅读项目 Readme,另外本章节需要一些 MPS 初学者进行补充。
      在输入 Login 那里要使用自动补全才能出来正确的 Login with QQ,使用回车补全出来的直接填了也没有用。其实上一个版本想把它搞成 QQ 微信通用的,但暂时没有精力。

      使用例

      Screenshot_20220703_120623.png

      (后续会调整文字颜色、边框等令其更加清晰易看)

      贡献方式

      首先感谢各位大佬贡献自己的时间给这个项目。

      1. 如果你对 JetBrains MPS 非常了解的话,可以帮忙直接贡献项目代码。(非常感谢!)
      2. 如果你未曾使用过 JetBrains MPS 但对该项目有兴趣的话,可以在试用过程中帮忙贡献关于入门使用方式的描述,我也会在我力所能及的范围内协助你上手 JetBrains MPS 的基础以帮助你更加快速地使用它。
      3. 如果你对该自定义语言的语法结构等有建议的话也非常欢迎提出。
      4. 另外欢迎各位大佬们贡献其他使用过程相关的 Bug 反馈或者功能建议。

      代码中有一个私货,会过滤掉开头的😐,可以删掉这个过滤。在 QQ 或微信聊天时每一句话开头加一个😐是一个我坚持了六年半多的习惯。

      FAQ

      Q: 为什么叫做“人类的本质”?
      A: 这是我的测试帐号的名字。这个机器人一开始只是用来做新生咨询用的,就是一个单纯匹配关键字的机器人,而且发送的内容也都是固定的,因此是一个复读机(确实),再借用一下“人类的本质是复读机”这一句网络调侃,就使用了这个名字。

      Q: JetBrains MPS 是什么?
      A: JetBrains MPS (元编程系统,Meta Programming System)是一个用于创建领域特定语言(DSL)的 IDE,用它可以方便地编写一个新的 DSL 的语法结构(Structure)、排版布局(Editor)、节点属性关联(Constraint)、节点的 Java 程序(Behavior)、类型系统(Typesystem)等,并且可以将该 DSL 转译为 Java 程序或 Kotlin 程序并运行,还可以生成对应的 IntelliJ IDEA 的插件或者独立的 IDE。
          简单地说就是一个写语言的。

      Q: 为什么 FAQ 里面只写了 3 个问题?
      A: 等想到了再补充吧。

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

        这是什么东西,看起来好强的样子...

        G 1 条回复 最后回复 回复 引用 0
        • G
          Geno1024 摸鱼 @Moyuyanli 最后由 编辑

          @Moyuyanli 在 人类的本质:使用 JetBrains MPS 编写的不完全 Mirai 自定义语言 "IDE" 中说:

          这是什么东西,看起来好强的样子...

          用 JetBrains MPS 自定义了一个“编程语言”(其实是一个领域特定语言),用它生成调用 Mirai 的代码并运行。

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

            标题的意思是这个语言叫IDE呢,还是叫人类的本质呢,还有仓库名也不一致

            G 1 条回复 最后回复 回复 引用 0
            • D
              dqfe123 最后由 编辑

              没有看懂是什么 ,可以相互学习一下
              我用 spring boot + mirai 写了一个小框架 本论坛的帖子地址

              可以看一下有没有可能可以一起开发

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

                @dqfe123 和主题不相关吧?

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

                  @tsudzuki 在 人类的本质:使用 JetBrains MPS 编写的不完全 Mirai 自定义语言 "IDE" 中说:

                  标题的意思是这个语言叫IDE呢,还是叫人类的本质呢,还有仓库名也不一致

                  抱歉给大佬产生了理解上的不便,标题的意思是“产品叫做‘人类的本质’,产品是一个 IDE,在该 IDE 中使用了一个自定义的语言,该语言名字未提及,该语言调用 Mirai”。

                  然后,仓库名是参考了一些其他的 JetBrains MPS 的代码仓,直接把写的 Language 名字当仓库名了(我也不知道为什么),然后当时随意写的 Language 名字是 com.geno1024.chatbot,当然名字可以改,现在感觉还是写作诸如 ChatbotLanguage 之类的好一点,我现在主要目标在实现功能上,还没有去花心思搞除了功能之外的东西。

                  tsudzuki 1 条回复 最后回复 回复 引用 0
                  • D
                    dqfe123 最后由 编辑

                    没搞懂 MPS 要解决什么问题

                    G 1 条回复 最后回复 回复 引用 0
                    • G
                      Geno1024 摸鱼 @dqfe123 最后由 编辑

                      @dqfe123 在 人类的本质:使用 JetBrains MPS 编写的不完全 Mirai 自定义语言 "IDE" 中说:

                      没搞懂 MPS 要解决什么问题

                      自定义编程语言或领域特定语言。

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

                        @Geno1024 那你可以慢慢实现,之后再来改名字也无妨

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

                          @tsudzuki 在 人类的本质:使用 JetBrains MPS 编写的不完全 Mirai 自定义语言 "IDE" 中说:

                          @Geno1024 那你可以慢慢实现,之后再来改名字也无妨

                          好的,谢谢你。

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

                            有个问题,如果需要使用第三方依赖怎么办。

                            其次,这个项目的目的是什么,是降低应用开发门槛吗?如果是为了降低应用开发门槛我认为做一个类似ue4的那种蓝图系统可能会更好一些

                            G 1 条回复 最后回复 回复 引用 0
                            • G
                              Geno1024 摸鱼 @RainChan 最后由 编辑

                              @RainChan 在 人类的本质:使用 JetBrains MPS 编写的不完全 Mirai 自定义语言 "IDE" 中说:

                              有个问题,如果需要使用第三方依赖怎么办。

                              目前只能通过手动导入 .jar 的方式来解决。后面我准备开发调用外部程序的功能,这或许也可以解决一部分第三方依赖调用。

                              其次,这个项目的目的是什么,是降低应用开发门槛吗?如果是为了降低应用开发门槛我认为做一个类似ue4的那种蓝图系统可能会更好一些

                              是的,本意是降低使用门槛,但是现在好像降低到奇怪的方向去了,好像其实门槛变上升了🤣

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

                                之前也有人搞 mirai dsl 来着,但是没消息了

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

                                  感觉读起来简单,写起来挺复杂的

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