eiriksgata / mirai-rulateday-dice Goto Github PK
View Code? Open in Web Editor NEW利用Mirai框架的Mirai-Console开发TRPG骰子插件模板。目前集成了大部分的常用指令,并在此基础上实现更多的跑团体系优化指令。例如COC7技能详细查询、DND5e技能列表查询、DND5e怪物图鉴等。目前处于测试阶段。
License: GNU Affero General Public License v3.0
利用Mirai框架的Mirai-Console开发TRPG骰子插件模板。目前集成了大部分的常用指令,并在此基础上实现更多的跑团体系优化指令。例如COC7技能详细查询、DND5e技能列表查询、DND5e怪物图鉴等。目前处于测试阶段。
License: GNU Affero General Public License v3.0
把代码中书写的文本全部改为由配置文件读取。
例如:,help指令中的返回文本内容,应当存放在配置文件中。
因为随着开发功能越来越多,有一些文本也许用户需要自己定义返回内容,因此不应当尝试让用户在代码中改动。而且日后如果尝试使用国际化,也会省去很多的事情。
Describe the bug
当.sc的参数出现了空格符或者其他时,将会没法识别出正确的指令参数
To Reproduce
Steps to reproduce the behavior:
.sc 1d5/1d100 50
时将会出错应当改为无论是否存在多少个空格也可以正常识别
问题回顾
随着功能的增加,导致数据库文件的变化频繁。用户升级插件时,因为数据库文件已经存在,因此没有重新生成新的数据库文件。
同时也不可以直接替换数据库文件,因为原本的数据库文件中存在了用户本身的一些数据,如果直接替换掉,将会导致数据丢失的情况。
解决办法
该功能表现为:使用.ww
指令时,会骰出数个d10的骰子,如果骰出的数值有>=8,则再骰一次,以此递归,最后算出出现>=8的骰子数值数量。
如今的.rb
& .rp
的处理太弱了,应该让其支持不需要手动的补全技能名和数值
有时候KP在带团时,没啥灵感,可以快速的获得一段参考内容会是一个不错的选择。
这是一个重要的更新清单
例如:.dnd指令 如果输入.dnd10000000 则会导致机器人疯狂的发送消息
形如创建一个牌堆,每人从中抽出后不放回的形式,输出相应的值
由于Mirai如今已经直接使用OpenJDK11,因此该项目也应该由1.8 变更为OpenJDK11
项目版本号变为0.3.1 ,调整所有Maven配置项 java.version 配置
也许应当在前端界面(例如文档旁边附带一个控制台输入器)用来给用户测试使用。
这个功能显然会涉及到很多的问题,其中就包含了技术的问题。复杂会涉及到人工智能方面的东西,简单点的则是通过大量的数据模板来进行固定的格式填入和拼凑。
也许应当尝试在开源社区里寻找某种文本撰写的项目。
在群聊中使用.cr指令后返回null,无论输入任何的关键字
问题描述
如果单纯使用.botoff 机器人会正常关闭。但是如果使用@+机器人.botoff则无法指定关闭。
除此之外,该指令应当无论是.bot off 还是 .botoff都应该生效,而不是只能.botoff生效
问题导致原因
因为Mirai依赖的升级后,导致@的文本内容发生了变化,因此导致没有办法识别检测到。
如今的方式是通过联系QQ来进行反馈,应当考虑启用直接提交,或者去网页端提交的形式进行数据反馈。
之前之所以没有做的原因是没有云端在线API服务。如今已经开始搭建了API服务,则应当考虑实现该功能。
这个情况是因为Github目前被莫名其妙的拦截,而Pages则更为严重,对于国内用户来说,基本上无法浏览该页面,除非等待较长的时间才可以正常的重定向显示。但是对于一般的查询人员来说,这种情况更像是无法打开浏览的问题。因此鉴于这种情况,打算直接迁移至Gitee(不太清楚支不支持解析docsify) 或者 部署至云端服务器。
因为目前所有的查询都是用模糊查询,因此当出现本身词条短小但是又有其本身描述内容时,会无法得出该词条内容。
例如查询先攻
输入
.dr先攻
回复
查询结果存在多个,请完善查询关键字直到存在1个才回显示详细信息
查询吻合关键字:
先攻
先攻变体:先攻值
先攻变体:速度因素
先攻变体:速度因素先攻调整值
先攻变体:集群先攻
因此无法搜索出先攻词条,当然这个可以通过人性化操作功能解决该问题。
但是模糊结果可能非常多,当超过20条词条,并且不出现在列表中,因此需要精确查询
解决方案
在指令结尾处加入特殊的结束符,例如#
则将其识别为精确查询
目前该指令依旧存在一些问题,例如有的人输入中文符的+
号没有办法进行计算,因此需要增加多种的中文运算符号支持。
具体包含以下几个运算符号:
+
/
×
÷
可以参考某种输入法中的符号选项。
目前的识别是通过空格开进行的参数识别符识别,有些人可能会在公式中携带有空格符,导致运算检查时结果很不明了。
除此之外还有一个问题就是,d的识别不支持大写。案例指令如下:
.r1D6+1d4
目前用到该功能的是先攻骰功能,因此需要进行修改,如果昵称为空 ( String.equals("") ) 则获取的是用户的本身昵称(TIM里面应该是这么实现的)
由原来的当前程序运行目录下,调整为由Mirai的Console提供的Config & Data 调用方法获得项目路径。
该更改也是为了适配MiraiAndroid & Mirai-Console .. 等以后可能会出现的其他情形。
主要变化如下:
由原本的 data/rulateday/ 改为 data/indi.eiriksgata.rulateday/
因此在下一个版本中,需要调整db文件 以及 怪物图片 /mm-images都会受到调整。
功能介绍
先攻骰作为DND5e不可或缺的功能之一,在每次正式开始战斗前都需要过先攻骰。因此DM每次都要统计排序出每个玩家的先攻顺序,这无疑是一个繁杂的工作。实际上这种工作可以直接交给机器人去实现。
初步设计
先攻骰某种意义来说,是一个存储查询功能。因为他的实现是包含了 查询+.r系列指令生成
先攻功能以及指令:
前提说明:<计算公式> 是指类似于.r 指令里面的公式 例如.r<计算公式> 实际使用可能为: ,r1d3这样的形式
<名称> 用来作为额外的识别字段,一般用于DM添加多个怪物
.atk
| .atk <计算公式>
| .atk <计算公式> <名称>
生成先攻骰指令,使用例子:.atk d20+3 食尸鬼A
.atklist
生成显示当前群(或者模式私聊)的先攻列表,使用例子:.atklist
.atkdel
| .atkdel <名称>
删除先攻池里面的一个先攻骰 如果如果没有带名称参数,会默认填入你当前所在群的(或者私聊)昵称。如果带有名称参数,会删除名称对应的你创建的先攻骰的数值。atkclear
清空当前先攻列表的数据。之前是通过获取Bot 的第一个机器人,然后让它通过找到朋友然后发送私聊消息。
当初是因为在MessageData中没有包含事件,但是现在已经有EventUtils作为回调的适配器,而且MessageData中也包含了Event(Object),因此可以直接改为对多事件类型进行判定。
Describe the bug
初步猜测:
添加好友失效,事件消息类型无处理:无好友情况下的发送群临时消息。
如果机器人好友中存在该朋友,那么会处理。
应当实现自动收录超出异常处理范围内的错误指令情况。
通过在本地中记录超出了系统中的异常处理之外的指令文本。
问题内容
目前对于需要下载的怪物图片会处于线程堵塞状态,直到怪物图片下载完成或者中断后才会继续活动。
也就是目前如果处于这个状态,那么所有的回复都会处于等待状态,机器人就会表现得似乎不说话不回话的状态。
因此需要开辟一个线程来处理这些等待的动作。
线程也要经有线程池管理。如果过多的线程会导致服务崩溃。
现在的扩展趋势是想集成更多的搜索库,但是又没有合适的格式化数据,如果有人帮忙愿意整理就好了。
可按不同的跑团类型进行不同的名字生成。总指令可以用.name<null>|<int>
|表示可以选择性填入整形变量。如果不输入,则默认为1。可以通过 .dndname
来生成符合dnd世界观的人物名字。
库中可以分为多种不同的国家地区名字生成形式。后期可以加入按国家地区来随机生成相应的角色名字。
随着Mirai的更新,JCenter已经被弃用,转为Maven**仓库。
因此本项目的依赖也要变更,更新Rulateday-dice版本为 0.3.4
现在的计算器工具类有BUG
复现:
.r1d3+d5+5d6-3+10d-1d5
1d3+d5+5d6-3+10d-1d5=2+3+(6+6+3+3+6)-3+(41+68+30+36+99+36+72+85+78+2)-4=29
答案显然是错误的
背景
基于目前很多的一些搜索导航机器人都具备了可视化互动的功能。
具体指:可以通过搜索出多个答案,然后通过输出相应的编号来进行不同的选项。
该功能的主要问题在于:
1.随机抽取物品
2.随机生成怪物
该更新主要是为了适应MiraiAndroid的D8编译导致Mybatis的mapper解析文件出错,而做出的代码风格的调整。
【16】塔(The Tower,XVI)【17】星星(The Star,XVII)
两者之间缺少了,
号
这些指令主要针对coc7版的而做的特定指令
现阶段的.r指令是分为两层的计算方式,第一次返回的是 计算生成每个 d(骰子的随机数值)随后 再进行第二次的合并运算。而中间无论出现什么中文字符,全部按照内部的计算器计算格式出结果。因此可能有些人想要做到 指定某种语言混杂其中,会导致出现计算结果异常。
原本打算在其计算公式内,无论混杂空格都能正常计算,现改成 公式+空格+文本 的形式进行计算。
Describe the bug
.ra指令自定义数值出错
To Reproduce
Steps to reproduce the behavior:
.st
的指令前.ra属性50
时就会回复 属性不存在或没有录入。
由于没有做空值判断
.coc和.dnd指令会返回null
该问题现已修复
现在直接使用.coc和.dnd指令时,默认参数为1
鉴于Mirai体系版本号变更为2.0.0 为了兼容Mirai2.0.0 因此本项目插件也将升级成 0.3.0
因为Mirai 2.0项目名的变更,因此开发者使用需要阅读Mirai 2.0 的相关内容
由于目前的0.3.0已经无法兼容mirai最新版 2.4.x+ 因此还需要进行项目的结构更改
新加.jrrp指令,该指令为生成当天的随机数。通过唯一的ID(qq号)来进行唯一识别生成。
更新与 trpg-dice-java 项目同步更新。
目前随着系统的更新功能的增加,导致出了许多新型的指令。这些指令的使用方式或者功能描述没有具体的查询方式,因此完善指令帮助功能显得尤其重要。*
.help
指令的时候,则会显示输出.help<关键字>的返回内容。待完善的.help功能描述
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.