关于基于 Mirai Console 的【经济管理】前置插件的构思
-
就是我翻遍了整个 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 服务。
更新用户金额:第三方插件可以向指定链接发送请求来修改用户的金额,并可以返回更为详细的结果。
查询用户金额:第三方插件可以向指定链接发送请求来查询用户的金额,并可以返回更为详细的结果。自查询
让第三方插件自行访问经济插件的数据库。
更新用户金额:第三方插件自行访问数据库并修改(可能会出现文件锁现象)。
查询用户金额:第三方插件自行访问数据库并查询。以上三种方式不管使用哪种都建议提供一个更易于开发者调用的包/模块。
当然,如果您有更好的解决方案,欢迎进行一个贴的回复! -
我觉得应该是你的插件提供一个EconomyManager的单例,EconomyManager提供各种method。然后第三方直接获取EconomyManager单例,调用method。连http都不需要。
-
@hundun000 嗯……那数据应该如何传递嘞
-
@Rominwolf method的返回值啊
-
@hundun000 噢噢我懂了,这个确实是一个好的解决方案!
-
(⊙o⊙)
-
-
此回复已被删除! -
可以作为前置插件,插件内部维护一个单例
-
莫名联想
-
有没有可能不只是经济?比如通用定时任务,后台任务框架。或者是通用数据库,消息记录什么的
-
我想的是可以不止一种货币,而是插件可以注册自己的货币,获得自己货币的增删改查功能。例如好感度管理,可以把好感度注册为货币,不用自己维护好感度的增删改查实现了。
统一货币可以作为build-in的货币,然后衍生出交易。例如用统一货币兑换好感度。 -
https://github.com/SkyNet1748/mirai-economy-core/pull/1
没看帖子,拿着教室的教学机搓了一晚上写的,感觉和你描述的差不多,只是接口管理器感觉仍不完善
坐等css大佬把我的代码全部覆盖(
-
-
-
@RainChan 在 关于基于 Mirai Console 的【经济管理】前置插件的构思 中说:
有没有可能不只是经济?比如通用定时任务,后台任务框架。或者是通用数据库,消息记录什么的
有道理,不过我觉得还是一个插件只实现一套确切的功能会好些?这样后期维护起来也会更方便些😂
-
@hundun000 在 关于基于 Mirai Console 的【经济管理】前置插件的构思 中说:
我想的是可以不止一种货币,而是插件可以注册自己的货币,获得自己货币的增删改查功能。例如好感度管理,可以把好感度注册为货币,不用自己维护好感度的增删改查实现了。
统一货币可以作为build-in的货币,然后衍生出交易。例如用统一货币兑换好感度。确实!我睡醒了更新一下帖子
-
@MrXiaoM 在 关于基于 Mirai Console 的【经济管理】前置插件的构思 中说:
https://github.com/SkyNet1748/mirai-economy-core/pull/1
没看帖子,拿着教室的教学机搓了一晚上写的,感觉和你描述的差不多,只是接口管理器感觉仍不完善
坐等css大佬把我的代码全部覆盖(
Hooray!
-
-
项目已经建好了,就等佬们的前置经济插件了(伸手)
最开始我也构思过经济插件,越想越发现不是我能力范围之内的东西,就放弃了。 -