MrXiaoM 发布的帖子
-
RE: LoliYouWant —— 随机萝莉图,刑啊
@Niko_Sakura 好,根据我目前的研究,即使是安全级图片也会出r18,但是这个网站的tag对图片描述非常详细,在0.1.1我更新了tag违禁词,你可以先到r18图片地址里面左侧的tags找找有没有不合适的tag添加进违禁词列表作为临时解决方案
-
保存只读配置文件
先上代码。这可能对大多数人来说没有必要,仅仅是我个人奇怪的操作习惯。
// 添加下面的代码到你继承了 ReadOnlyPluginData 或者 ReadOnlyPluginConfig 的配置类即可 @OptIn(ConsoleExperimentalApi::class) private lateinit var owner_: PluginDataHolder @OptIn(ConsoleExperimentalApi::class) private lateinit var storage_: PluginDataStorage @OptIn(ConsoleExperimentalApi::class) override fun onInit(owner: PluginDataHolder, storage: PluginDataStorage) { owner_ = owner storage_ = storage } // 不需要设为 public,直接调用扩展方法 save 即可 @OptIn(ConsoleExperimentalApi::class) private fun save() { kotlin.runCatching { storage_.store(owner_, this) }.onFailure { e -> // 记得处理异常 }
如果你只想关闭定时保存,不想关闭属性修改后自动保存,请用
AutoSavePluginData
或AutoSavePluginConfig
并重写 shouldPerformAutoSaveWheneverChanged()
使它返回 falsemirai 的只读配置文件曾让我陷入了两难的局地,按照我的个人理解,PluginConfig 是给用户确定插件的一些参数的,插件不应该去修改数值,所以我没用 AutoSavePluginConfig 而是用了 ReadOnlyPluginConfig,在我编写插件调试的过程中我发现一个问题,它真的是只读的 —— 这很正常,因为它就叫只读配置,它在配置文件不存在时会保存默认配置文件,但在我添加新的配置键到类之后,却因为它的只读而没有在配置文件里更新不存在的配置键……
这不符合我的预期,由于我当时没看到 AutoSavePluginData 里可以关定时保存,故着手研究如何保存只读配置,最后在 AutoSavePluginData 里找到了……
重载配置文件时,
reload()
再save()
,即可更新不存在的配置键。我只能以「简化成了我想要的样子不像 AutoSavePluginData 有我不需要的功能」来安慰自己了 :(
补充
经过讨论,ReadOnlyPluginData 无法保存是在旧版本 mirai 中的问题,在新版本 mirai 可正常保存(具体哪个版本我还没去验证)。添加上述代码可兼容在旧版本 mirai 保存只读配置文件。
-
RE: Mirai闪照破解
@EventHandler public void onFriendMessage(FriendMessageEvent event){ Optional<FlashImage> flashImage = event.getMessage().stream().filter(it -> it instanceof FlashImage).findFirst() if (flashImage.isPresent()) { Image image = flashImage.get().getImage(); event.getSender().sendMessage(new PlainText("你发送了一张闪照\n").plus(image)); } }