Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

一些改动和一个新功能 #3

Merged
merged 2 commits into from Jan 12, 2023
Merged

Conversation

cYanosora
Copy link
Contributor

自上次给偶像写了cardinfo指令 #1 后有一段时间了,这次又想整点新活

分了两次commit来完成此次的pr

commit#4337ef3

为unibot部分指令添加中文支持,应该能更方便玩家平时的使用以及指令记忆

这个想法也是从邦那边学来的

我采用很简单的正则表达式实现了此功能。

在原有指令不变的情况下,新的触发指令方式如下:

  • 查卡/查卡面/查询卡面 [角色昵称] -> 对应原来的findcard
  • 查卡/查卡面/查询卡面 [卡面id] -> 对应原来的cardinfo
  • 查活动/查询活动 [活动id] -> 对应原来的event

commit#c57be3f

为unibot增加了查活动、获取活动图鉴的指令,效果图在pics/example下

触发方式如下:

  • 指令①:活动图鉴/活动列表/活动总览/findevent all
  • 指令②:查活动/查询活动/findevent [关键字]

指令说明:

指令②支持的[关键字]如下:
活动类型(普活/马拉松/5v5...)
活动属性(蓝星/紫月/绿草/粉花/橙心...)
组合的缩写(ln/mmj/vbs/ws/25)
角色的昵称(sekai角色以及不带附属组合的vs角色都是直接采用数据库保存的角色昵称,带附属组合的vs角色必须采用组合名缩写+vs角色昵称的格式)
[关键字]可有多个,顺序随意,但必须使用空格分离

指令效果:
指令①效果:返回当前所有活动的概要,效果图位于pics/example/全部活动.png(其他效果图同理)
指令②效果:通过关键字筛选活动,返回活动概要图,没有关键字则会返回提示图,提示图位于pics/findevent_tips.jpg(附带psd工程文件)

指令②使用起来稍微有点复杂,这里举一些使用例:
单关键字方式:

  1. 查活动 5v5:返回活动类型为5v5的活动概要
  2. 查活动 紫月:返回活动属性为紫月的活动概要
  3. 查活动 knd:返回当期出卡(包括报酬)含knd的活动概要
  4. 查活动 miku:返回当期出卡含任意组合的miku的活动概要
  5. 查活动 25miku:返回当期出卡含白葱的活动概要
  6. 查活动 25:返回当期出卡含任意25成员(不含vs)的活动概要,而并不是25箱活的活动概要

多关键字方式:

  1. 查活动 草 5v5:返回活动类型为5v5,活动属性为绿草的活动概要
  2. 查活动 knd 蓝:返回活动属性为蓝星,出卡含knd的活动概要
  3. 查活动 普活 紫月 knd:返回活动类型为马拉松,活动属性为紫月,出卡含knd的活动概要(即使knd为不同属性的报酬卡,也会显示,毕竟是"查活动"指令)

以及一些奇怪的方式:

  1. 查活动 ln mmj vbs ws 25:返回当期出卡包含任意sekai角色的活动概要(其实相当于指令①的效果了,因为还没有纯vs活)
  2. 查活动 25大哥:不存在滴捏,所以返回提示图

对于指令②中针对角色、组合的关键字匹配方式,示例中给的其实就是"并"的逻辑
但为方便大家理解指令,也可以采用"与"的逻辑,源码中其实就是默认采用"与"的逻辑

此时效果就会变成:

  1. 查活动 25:仅返回25箱活的活动概要
  2. 查活动 25 25miku:返回25箱活且vs出卡为白葱的活动概要
  3. 查活动 knd ick:返回出卡同时包括knd、ick混活的活动概要

但是诸如 "查活动 25 ln" 等等像这样的都将不能再生成活动概要,因为不存在含两个团同时全员出卡的活动
具体哪种更好用就看自己更习惯怎样去理解了。

最后,特意区分指令①是因为指令①的图一般来说会很大
目前的活动数量**(82个)在使用本机测试仅生成时间就惊人地花费了近8秒**,
这张图尽管降低了质量也达到了3mb左右,对于频道bot而言不太友好,以后可能需要优化一下

就目前而言的话,考虑到活动概要图不需要每次都即时生成,否则活动数量一多真的会生成很久
所以生成的图都统一保存到piccache/findevent下,不清楚偶像是怎么处理图片缓存的留存时间的,
这里我做的处理是指令每次生成的图都不会自动删除,只有活动数量更新时才会删除所有旧的活动概要图,
如果没有这样做的必要也可以移除这部分代码


以上就是本次新指令的介绍,和之前带来的cardinfo指令一样,功能效果、样式都是来自隔壁邦圈山本佬的茨菇bot,本人只是很拙劣地模仿着复现了而已,并没有什么代码能力和设计天赋,想做这些功能只是因为自己玩bangdream时认为那边茨菇bot有一些很常用的功能是烤这边暂时还缺失的,以及对偶像的支持和崇拜感(小声),所以才做的。

写得很烂,很多地方优化还不够,图也做得丑,也许还需要自行修改才能实装,如果偶像并不介意烤邦bot都采用相同风格的指令,还请采纳,或者想有自己的设计风格也可以尝试修改(重写)

@watagashi-uni watagashi-uni merged commit d520dd7 into watagashi-uni:main Jan 12, 2023
@cYanosora
Copy link
Contributor Author

首先感谢偶像采用新功能😘,虽然不清楚烤这边有无使用需求😌


然后是一声抱歉,新功能有些小缺陷:

  • 给的findevent_tips.jpg文件中一些图标稍微有点错位,可以请偶像自己通过工程文件手动修改下吗?
  • drawEventHandbook函数依赖于很多json资源,如果这些资源更新不及时可能会在生成图片时报错,需要在bot.py里做下异常处理,如果没有更新问题当我没说()

另外,想问一个强迫症的问题,现在中文指令"查卡、查活动"都是支持"识别id"或者"筛选条件"的,那么对于“查歌曲”的指令是否也需要达成一致性呢?🤔
比如说:

  1. 查歌 + 歌曲id/歌曲昵称 ->对应原来的pjskinfo + 歌曲昵称
  2. 查歌 + 25时 + 活动曲 ->显示25团有哪些箱活曲
  3. 查歌 + 25时 + 定数-> 显示25团哪些歌曲有任意难度满足定数需求,样式可以模仿这次的"查活动"一样

等等这样很简单的小功能,然后原来的pjskinfo、难度排行指令也可以显示一下歌曲id什么的方便查歌+歌曲id指令的使用,如果偶像觉得这种功能存在使用人群我可以安排上日程的😊

虽然我认为指令触发简化有利于一些记不住指令的小笨蛋们平时的使用,但因为考虑到志步一箱曲名称就是《1》、以及其他歌曲别名也为纯数字的原因,这个查歌+歌曲id/歌曲昵称的功能可能实现起来难以下手😢,可能还是放弃指令极度简洁的想法保持原样就行😞,不知道偶像有什么想法?

@watagashi-uni
Copy link
Owner

我的后端更新大概推包1分钟以内更完masterdata的json文件,三分钟解包完数据所以资源的问题不大
查歌用id的话确实会有冲突问题而且基本没人用歌曲id查所以我感觉还是保持原样比较好
查活动和event放在一起其实也出现了差不多的问题,比如用 查活动 25 会相当于event 25并不会显示25时的活动(自己改了一下现在是25时了)
帮助图片的话之后由时间我再改改
总之感谢专门为bot写这么多功能,真的太感谢了!

@cYanosora
Copy link
Contributor Author

我是自愿的wwww,倒是感谢偶像能这么快处理我惊吓式的PR请求()😂
而且看见某次readme改动说偶像您不是科班出身,还做了这么多工作,崇拜等级即刻提高好几个档次🥰


不过新功能原来还有这样的问题,才发觉25的组合名是纯数字来着,我还是太草率了,匹配规则改成25时确实应该没问题了。
查歌功能的一些新想法我也会继续考虑的,如果觉得大家确实可能有需求我可以花时间来弄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants