MiraiForum

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

    关于基于 Mirai Console 的【经济管理】前置插件的构思

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

      就是我翻遍了整个 Mirai 的社区和 Github,也没有找到一个类似的经济插件。但是一个生态比较重要的元素就是金融统一,所以我设想了一个针对于 Mirai 生态的前置插件——经济插件。

      如果您曾经了解过 Minecraft 服务器中的经济类插件,那么可以直接代入到本插件的构思。
      具体的 Minecraft 经济插件请见:https://www.mcbbs.net/thread-962904-1-1.html

      命令

      根据上方链接提供的命令列表来看,本插件也会分为用户命令、Bot 管理员命令和控制台命令三种层级的命令。

      用户命令:
      /money - 查询自身的余额
      /money [@或QQ号] - 查询目标用户的余额
      /pay <@或QQ号> <金额> - 转账给目标用户指定数量的金额
      /moneytop - 查询金额排行榜
      /moneyrank - 同上

      Bot 管理员命令:
      Bot 管理员可以设定多个,拥有此权限的管理员可以使用以下命令。
      /money give <@或QQ号> <金额> - 给予指定用户指定数量的金额
      /money take <@或QQ号> <金额> - 扣除指定用户指定数量的金额
      /money set <@或QQ号> <金额> - 设定指定用户的金额为指定数量

      控制台命令:
      允许在控制台形式执行以下命令,无视权限。
      /money give <QQ号> <金额> - 给予指定用户指定数量的金额
      /money take <QQ号> <金额> - 拿走指定用户指定数量的金额
      /money set <QQ号> <金额> - 设定指定用户的金额为指定数量

      权限

      可以基于 Mirai 社区的另一款权限插件 LuckPerms 来实现以下权限的功能。

      • economy.user.money - 允许查询自己或别人的余额
      • economy.user.money.other - 允许查询别人的余额
      • economy.user.pay - 允许向别人转账
      • economy.user.moneytop - 允许查询金额排行榜
      • economy.admin.give - 允许给予某个用户金额
      • economy.admin.take - 允许扣除某个用户的余额
      • economy.admin.set - 允许设置某个用户的余额
      • economy.admin.* - 允许以上所有管理员类下的命令

      配置

      这些是可能会用到的一些插件配置。

      system: #通用相关
        open: true #是否开启此插件
        initial-money: 0 #初始用户金额
        payment-tax: 0 #转账时需要支付的税
        rank: #排行榜
          open: true #是否开启此功能
          group-size: 10 # 群聊中显示的名次
          private-size: 20 #私聊中显示的名次
      currency: #货币相关
        name: "元" #货币单位
        integer: true #是否限制余额为整数
        thousands-separtor: "," #千位数金额分割
        min-money: LONG_MIN_SIZE #最少的金额
        max-money: LONG_MAX_SIZE #最大的金额
      

      开发者

      鉴于 Mirai 插件的开发和 Minecraft 服务器插件的开发有些区别,所以我设想了以下几种方案来传递数据。

      单例(推荐)

      以单例的方式来更新用户或查询用户的金额。
      更新用户金额:第三方插件可以直接通过插件提供的单例来修改用户的金额。
      查询用户金额:第三方插件可以直接通过插件提供的单例来查询用户的金额。

      控制台

      以控制台的方式来更新用户或查询用户的金额。
      更新用户金额:第三方插件可以直接向控制台发送命令来修改用户的金额。
      查询用户金额:鉴于向控制台提交命令是单向的(即无法返回回调数据),所以无法通过控制台查询用户的数据。
      (当然可能是我疏忽了,期待打脸)

      HTTP(次荐)

      构建一个简易的内部 HTTP 服务。
      更新用户金额:第三方插件可以向指定链接发送请求来修改用户的金额,并可以返回更为详细的结果。
      查询用户金额:第三方插件可以向指定链接发送请求来查询用户的金额,并可以返回更为详细的结果。

      自查询

      让第三方插件自行访问经济插件的数据库。
      更新用户金额:第三方插件自行访问数据库并修改(可能会出现文件锁现象)。
      查询用户金额:第三方插件自行访问数据库并查询。

      以上三种方式不管使用哪种都建议提供一个更易于开发者调用的包/模块。
      当然,如果您有更好的解决方案,欢迎进行一个贴的回复!

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

        我觉得应该是你的插件提供一个EconomyManager的单例,EconomyManager提供各种method。然后第三方直接获取EconomyManager单例,调用method。连http都不需要。

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

          @hundun000 嗯……那数据应该如何传递嘞

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

            @Rominwolf method的返回值啊

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

              @hundun000 噢噢我懂了,这个确实是一个好的解决方案!

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

                (⊙o⊙)

                Rominwolf 1 条回复 最后回复 回复 引用 0
                • Rominwolf
                  Rominwolf @cssxsh 最后由 编辑

                  @cssxsh 在 关于基于 Mirai Console 的【经济管理】前置插件的构思 中说:

                  (⊙o⊙)

                  @cssxsh wow 是大佬来捧场了!

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

                    此回复已被删除!
                    Rominwolf 1 条回复 最后回复 回复 引用 1
                    • StageGuard
                      StageGuard 最后由 编辑

                      可以作为前置插件,插件内部维护一个单例

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

                        莫名联想
                        8fb1d3f9-46a0-48d9-97f6-568335a5dfa9-image.png

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

                          有没有可能不只是经济?比如通用定时任务,后台任务框架。或者是通用数据库,消息记录什么的

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

                            我想的是可以不止一种货币,而是插件可以注册自己的货币,获得自己货币的增删改查功能。例如好感度管理,可以把好感度注册为货币,不用自己维护好感度的增删改查实现了。
                            统一货币可以作为build-in的货币,然后衍生出交易。例如用统一货币兑换好感度。

                            MrXiaoM Rominwolf 2 条回复 最后回复 回复 引用 0
                            • MrXiaoM
                              MrXiaoM 童心未泯 @hundun000 最后由 编辑

                              @hundun000

                              https://github.com/SkyNet1748/mirai-economy-core/pull/1

                              没看帖子,拿着教室的教学机搓了一晚上写的,感觉和你描述的差不多,只是接口管理器感觉仍不完善

                              坐等css大佬把我的代码全部覆盖(

                              MrXiaoM created this issue in SkyNet1748/mirai-economy-core

                              closed 初步完成接口 #1

                              Rominwolf 1 条回复 最后回复 回复 引用 0
                              • Rominwolf
                                Rominwolf @Teeth 最后由 编辑

                                @Teeth 在 关于基于 Mirai Console 的【经济管理】前置插件的构思 中说:

                                我觉得可以直接把Minecraft - Vaule插件拿过来用(笑

                                有道理😂

                                1 条回复 最后回复 回复 引用 0
                                • Rominwolf
                                  Rominwolf @Orisland 最后由 编辑

                                  @Orisland 在 关于基于 Mirai Console 的【经济管理】前置插件的构思 中说:

                                  莫名联想
                                  8fb1d3f9-46a0-48d9-97f6-568335a5dfa9-image.png

                                  对对对!

                                  1 条回复 最后回复 回复 引用 0
                                  • Rominwolf
                                    Rominwolf @RainChan 最后由 编辑

                                    @RainChan 在 关于基于 Mirai Console 的【经济管理】前置插件的构思 中说:

                                    有没有可能不只是经济?比如通用定时任务,后台任务框架。或者是通用数据库,消息记录什么的

                                    有道理,不过我觉得还是一个插件只实现一套确切的功能会好些?这样后期维护起来也会更方便些😂

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

                                      @hundun000 在 关于基于 Mirai Console 的【经济管理】前置插件的构思 中说:

                                      我想的是可以不止一种货币,而是插件可以注册自己的货币,获得自己货币的增删改查功能。例如好感度管理,可以把好感度注册为货币,不用自己维护好感度的增删改查实现了。
                                      统一货币可以作为build-in的货币,然后衍生出交易。例如用统一货币兑换好感度。

                                      确实!我睡醒了更新一下帖子

                                      1 条回复 最后回复 回复 引用 0
                                      • Rominwolf
                                        Rominwolf @MrXiaoM 最后由 编辑

                                        @MrXiaoM 在 关于基于 Mirai Console 的【经济管理】前置插件的构思 中说:

                                        @hundun000

                                        https://github.com/SkyNet1748/mirai-economy-core/pull/1

                                        没看帖子,拿着教室的教学机搓了一晚上写的,感觉和你描述的差不多,只是接口管理器感觉仍不完善

                                        坐等css大佬把我的代码全部覆盖(

                                        Hooray!

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

                                          https://github.com/cssxsh/mirai-economy-core/releases/tag/v1.0.0-dev

                                          稍微可用的版本

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

                                            项目已经建好了,就等佬们的前置经济插件了(伸手)
                                            最开始我也构思过经济插件,越想越发现不是我能力范围之内的东西,就放弃了。

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