Giter Club home page Giter Club logo

bilibili-helper's Introduction

基于 Mirai Console哔哩哔哩 订阅插件

Release Downloads MiraiForum

使用前应该查阅的相关文档或项目

从 1.2.5 版本开始 将截图部分功能的转移至 mirai-selenium-plugin
截图功能的启用需要其作为前置插件
关于截图支持的环境请浏览 运行平台支持
自动触发URL解析 详见 信息解析 指令
消息 模板 详见配置(自 1.4.0 起截图功能由模板内容来配置)
从 1.7.0 版本开始 提供 /bili-login 指令以登录个人账号,解决B站反爬问题

指令

注意: 使用前请确保可以 在聊天环境执行指令
带括号的/前缀是可选的
<...>中的是指令名,由空格隔开表示或,选择其中任一名称都可执行例如/B视频 添加 11783021
[...]表示参数,当[...]后面带?时表示参数可选
{...}表示连续的多个参数

本插件指令权限ID 格式为 xyz.cssxsh.mirai.plugin.bilibili-helper:command.*, * 是指令的第一指令名
例如 /B动态 添加 496371957 的权限ID为 xyz.cssxsh.mirai.plugin.bilibili-helper:command.bili-dynamic

参数 uid 例如 https://space.bilibili.com/508963009/ 的数字 508963009
参数 contact 为QQ号或者群号,可以省略,会从当前聊天环境获取,
比如群聊中会自动填充为当前群号, 但控制台中必须填充

子指令 sleep/attarget被许可人 ID
处于休眠时间的订阅将不会推送
举例:

  • /bili-dynamic sleep g12345 00:00 06:00, 00:00~06:00 时间段内将不会推送

处于艾特时间的订阅将会添加艾特
举例:

  • /bili-live at g12345 19:00 23:00, 19:00 23:00 时间段内将会艾特全体
  • /bili-live at u456789 19:00 23:00, 19:00 23:00 时间段内将会艾特用户456789

子指令 croncron 参数是 CRON 表达式, 由 秒 分钟 小时 日 月 周 组成
举例:

  • /bili-dynamic time 508963009 "0 0 14 * * ?", 0 0 14 * * ? 表示每天 14:00 都执行一次
  • /bili-video time 508963009 "0 0 18 ? * 2-6", 0 0 18 ? * 2-6 表示星期一至星期五 每天 18:00 执行一次 可以使用在线编辑器生成 https://www.bejson.com/othertools/cron/
    为防止被 空格 分成多个参数,请使用 " 包裹参数

动态订阅指令

指令 描述
/<bili-dynamic B动态> <add 添加> [uid] [contact]? 添加一个b站动态订阅
/<bili-dynamic B动态> <stop 停止> [uid] [contact]? 停止一个b站动态订阅
/<bili-dynamic B动态> <time 定时> [uid] [cron]? 设置任务的定时信息
/<bili-dynamic B动态> <list 列表> [contact]? 列出当前联系人的动态订阅
/<bili-dynamic B动态> <filter 过滤> [type] [add]? 过滤特定类型的动态
/<bili-dynamic B动态> <forbid 屏蔽> [pattern] [add]? 添加一个动态正则屏蔽
/<bili-dynamic B动态> <sleep 休眠> [target] [start] [end] 添加一个休眠时间
/<bili-dynamic B动态> <at 艾特> [target] [start] [end] 添加一个艾特时间

/bili-dynamic forbid 转发抽奖 添加一个正则屏蔽
/bili-dynamic forbid 转发抽奖 false 取消一个正则屏蔽
/bili-dynamic filter 视频 添加一个动态类型过滤
/bili-dynamic filter 视频 false 取消一个动态类型过滤
type 取值 回复, 图片, 文本, 视频, 专栏, 音乐, 剧集, 删除, 番剧, 电视, 直播

直播订阅指令

指令 描述
/<bili-live B直播> <add 添加> [uid] [contact]? 添加一个b站直播订阅
/<bili-live B直播> <stop 停止> [uid] [contact]? 停止一个b站直播订阅
/<bili-live B直播> <time 定时> [uid] [cron]? 设置任务的定时信息
/<bili-live B直播> <list 列表> [contact]? 列出当前联系人的直播订阅
/<bili-live B直播> <sleep 休眠> [target] [start] [end] 添加一个休眠时间
/<bili-live B直播> <at 艾特> [target] [start] [end] 添加一个艾特时间

视频订阅指令

指令 描述
/<bili-video B视频> <add 添加> [uid] [contact]? 添加一个b站视频订阅
/<bili-video B视频> <stop 停止> [uid] [contact]? 停止一个b站视频订阅
/<bili-video B视频> <time 定时> [uid] [cron]? 设置任务的定时信息
/<bili-video B视频> <list 列表> [contact]? 列出当前联系人的视频订阅
/<bili-video B视频> <forbid 屏蔽> [type] [add]? 添加一个视频类型屏蔽
/<bili-video B视频> <filter 过滤> [tid] [add]? 添加一个视频分区过滤
/<bili-video B视频> <sleep 休眠> [target] [start] [end] 添加一个休眠时间
/<bili-video B视频> <at 艾特> [target] [start] [end] 添加一个艾特时间

/bili-video forbid 付费 添加一个类型屏蔽
/bili-video forbid 付费 false 取消一个类型屏蔽
/bili-video filter 1 添加一个分区过滤过滤
/bili-video filter 1 false 取消一个分区过滤过滤
type 取值 付费, 联合, 回放
tid 取值请参考 https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/video/video_zone.md

视频订阅不宜过多,否则会触发b站反爬策略,导致IP被锁定 动态订阅一般会包含视频内容,推荐以此代替

剧集订阅指令

指令 描述
/<bili-season B剧集> <add 添加> [sid] [contact]? 添加一个b站剧集订阅
/<bili-season B剧集> <stop 停止> [sid] [contact]? 停止一个b站剧集频订阅
/<bili-season B剧集> <time 定时> [uid] [cron]? 设置任务的定时信息
/<bili-season B剧集> <list 列表> [contact]? 列出当前联系人的剧集订阅
/<bili-season B剧集> <sleep 休眠> [target] [start] [end] 添加一个休眠时间
/<bili-season B剧集> <at 艾特> [target] [start] [end] 添加一个艾特时间

剧集订阅需要 Season ID 例如 https://www.bilibili.com/bangumi/play/ss3835338353
可以通过 搜索指令 搜索番剧 获得链接

信息解析指令

指令 描述
/<bili-info B信息> <aid> [id] 根据 avid 获取视频信息
/<bili-info B信息> <bvid> [id] 根据 bvid 获取视频信息
/<bili-info B信息> <dynamic> [id] 根据 id 获取动态信息
/<bili-info B信息> <live> [id] 根据 id 获取直播信息
/<bili-info B信息> <user> [id] 根据 id 获取用户信息

因为返回结果包含图片,需要在聊天环境执行指令
消息中包含 BV12v411G7dP av2 等等 id 信息时会自动触发解析
目前会触发的正则表达式

// Video
"""(?i)(?<!\w)(?:av(\d+)|(BV[0-9A-z]{10}))"""
// Dynamic
"""(?<=t\.bilibili\.com/(?:h5/dynamic/detail/)?)(\d+)"""
// Live Room
"""(?<=live\.bilibili\.com/)(\d+)"""
// User Space
"""(?<=space\.bilibili\.com/|bilibili\.com/space/)(\d+)"""
// Season
"""(?i)(?<!\w)ss(\d{4,10})"""
// Episode
"""(?i)(?<!\w)eq(\d{4,10})"""
// Media
"""(?i)(?<!\w)md(\d{4,10})"""
// Article
"""(?i)(?<!\w)cv(\d{4,10})"""
"""(?<=bilibili\.com/read/mobile\?id=)(\d+)"""
// Short Link
"""(?<=b23\.tv\\?/)[0-9A-z]+"""

搜索指令

指令 描述
/<bili-search B搜索> <user 用户> [keyword] 搜索用户
/<bili-search B搜索> <bangumi 番剧> [keyword] 搜索番剧
/<bili-search B搜索> <ft 影视> [keyword] 搜索影视

返回结果包含图片,需要在聊天环境执行指令

任务列表指令

指令 描述
/<bili-task B任务> <all> 全部任务
/<bili-task B任务> <dynamic> 动态任务
/<bili-task B任务> <live> 直播任务
/<bili-task B任务> <season> 剧集任务
/<bili-task B任务> <video> 视频任务
/<bili-task B任务> <config> 屏蔽设置

模板配置指令

指令 描述
/<bili-template B模板> <datetime> [pattern] 日期格式
/<bili-template B模板> <reload> 重新加载

pattern 的 取值为 DateTimeFormatter
举例:

  • /B模板 datetime ISO_LOCAL_DATE_TIME
  • /B模板 datetime yyyy-MM-dd

登录指令

指令 描述
/<bili-login B登录> 二维码登录

设置

位于Mirai-Console运行目录下的config/xyz.cssxsh.mirai.plugin.bilibili-helper文件夹下

BiliHelperSettings.yml

  • cache 图片缓存位置, 默认为 ImageCache
  • limit 动态 订阅 输出图片数量上限, 默认为 16
  • api API 访问间隔时间,单位秒, 默认为 10
  • video 视频 订阅 访问间隔时间,单位分钟, 默认为 10
  • dynamic 动态 订阅 访问间隔时间,单位分钟, 默认为 10
  • live 直播 订阅 访问间隔时间,单位分钟, 默认为 30
  • season 番剧 订阅 访问间隔时间,单位分钟, 默认为 30
  • refresh 启动时刷新 last,订阅最后推送将会重新开始记录,未推送内容将会因此丢弃
  • selenium 是否启用截图 此配置项废弃,通过 Template 文件内容来确定是否启用截图
  • ban 排除的自动解析内容,可以放一些不希望被解析的AV号之类的
  • forward 转发自动解析, 使用转发的形式发送自动解析结果
  • max 一次性推送的订阅内容上限, 超过这个上限将会尝试合并为转发消息

BiliCleanerConfig.yml

  • interval 图片清理的间隔时间,单位 小时
  • expires 图片缓存过期时间,单位 小时

SeleniumConfig.yml

  • user_agent 截图设备UA 网页识别设备类型,进而影响截图的效果
    iPad Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1 MicroMessenger
    iPhone Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 MicroMessenger
    Mac Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50 MicroMessenger
  • width 截图宽度
  • height 截图高度
  • pixel_ratio 截图像素比 此配置废除
  • headless 无头模式(后台模式)
  • home 浏览器会保持打开主页,以加快其他页面加载速度 此配置废除
  • hide 隐藏的web组件(jQ选择器)
    添加 ".international-header", ".top-bar", ".m-navbar" 可以屏蔽顶边栏

LiveAtAll

此设置 1.5.0 废除
此配置通过权限设置,权限ID为 xyz.cssxsh.mirai.plugin.bilibili-helper:live.atall
配置对象为群,即 g*, g12345
举例,perm add g12345 xyz.cssxsh.mirai.plugin.bilibili-helper:live.atall

Template

位于 config/xyz.cssxsh.mirai.plugin.bilibili-helper/Template 目录下的 template 文件
文件名为对应的配置对象(类名),文件内容的 #... 是替换标记,将会替换为对应的值
值的名称请参考 bilibili/data 中的数据定义
#images, #detail, #screenshot 为特殊的替换标记,将会替换为特殊的处理结果
#images 将会替换为内容图片
BiliRoomInfo#detail 将会替换为对应的 Live
DynamicCard#detail 将会替换为对应的 card 解析结果
DynamicInfo#screenshot 将会替换为截图(需要安装 mirai-selenium-plugin) 在 Article#screenshot 将会替换为截图(需要安装 mirai-selenium-plugin) 例如可以将 VideoStatus.template 改为

👍 #like 💰 #coin ⭐ #favorite
▶️ #view 💬 #reply 🔄 #share

Cookies

位于 data/xyz.cssxsh.mirai.plugin.bilibili-helper/cookies.json
导入 cookies文件 不是必须的,这是实验性功能,主要是防止b站反爬IP锁定
从 浏览器插件 EditThisCookie 导出Json 填入文件
EditThisCookie 安装地址 Chrome Firefox Edge

现在你可以直接使用登录指令刷新 cokies

安装

MCL 指令安装

./mcl --update-package xyz.cssxsh:bilibili-helper --channel maven-stable --type plugins

手动安装

  1. Releases 或者 Maven 下载 mirai2.jar
  2. 将其放入 plugins 文件夹中

截图前置

./mcl --update-package xyz.cssxsh.mirai:mirai-selenium-plugin --channel maven-stable --type plugins

TODO

  • 完善剧集订阅
  • 自动清理图片缓存

afdian

bilibili-helper's People

Contributors

cssxsh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

bilibili-helper's Issues

1.2.0版本报错,Mirai版本2.8.0-M1

E/bilibili-helper: kotlinx.serialization.json.internal.JsonDecodingException: Expected start of the array '[', but had 'EOF' instead
JSON input: 
kotlinx.serialization.json.internal.JsonDecodingException: Expected start of the array '[', but had 'EOF' instead
JSON input: 
	at kotlinx.serialization.json.internal.JsonExceptionsKt.JsonDecodingException(JsonExceptions.kt:24)
	at kotlinx.serialization.json.internal.JsonExceptionsKt.JsonDecodingException(JsonExceptions.kt:32)
	at kotlinx.serialization.json.internal.JsonLexer.fail(JsonLexer.kt:493)
	at kotlinx.serialization.json.internal.JsonLexer.fail(JsonLexer.kt:215)
	at kotlinx.serialization.json.internal.JsonLexer.unexpectedToken(JsonLexer.kt:198)
	at kotlinx.serialization.json.internal.JsonLexer.consumeNextToken(JsonLexer.kt:190)
	at kotlinx.serialization.json.internal.StreamingJsonDecoder.beginStructure(StreamingJsonDecoder.kt:37)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:29)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43)
	at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63)
	at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:32)
	at kotlinx.serialization.json.Json.decodeFromString(Json.kt:100)
	at xyz.cssxsh.mirai.plugin.BiliUtilsKt$cookies$2.getValue(BiliUtils.kt:294)
	at xyz.cssxsh.mirai.plugin.BiliUtilsKt.getCookies(BiliUtils.kt:30)
	at xyz.cssxsh.mirai.plugin.BiliUtilsKt.load(BiliUtils.kt:62)
	at xyz.cssxsh.mirai.plugin.BiliHelperPlugin.onEnable(BiliHelperPlugin.kt:49)
	at net.mamoe.mirai.console.internal.plugin.JvmPluginInternal.internalOnEnable$mirai_console(JvmPluginInternal.kt:113)
	at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:122)
	at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt)
	at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt:36)
	at net.mamoe.mirai.console.plugin.PluginManager.enablePlugin(PluginManager.kt:129)
	at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.enableAllLoadedPlugins$mirai_console(PluginManagerImpl.kt:172)
	at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge.doStart$mirai_console(MiraiConsoleImplementationBridge.kt:208)
	at net.mamoe.mirai.console.MiraiConsoleImplementation$Companion.start(MiraiConsoleImplementation.kt:276)
	at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon(MiraiConsoleTerminalLoader.kt:152)
	at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon$default(MiraiConsoleTerminalLoader.kt:151)
	at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.main(MiraiConsoleTerminalLoader.kt:47)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.itxtech.mcl.Utility.bootMirai(Utility.java:83)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:138)
	at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:226)
	at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1692)
	at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:1013)
	at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109)
	at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:412)
	at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3578)
	at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:107)
	at org.mozilla.javascript.ArrowFunction.call(ArrowFunction.java:43)
	at org.mozilla.javascript.InterfaceAdapter.invokeImpl(InterfaceAdapter.java:155)
	at org.mozilla.javascript.InterfaceAdapter.lambda$invoke$0(InterfaceAdapter.java:105)
	at org.mozilla.javascript.Context.call(Context.java:554)
	at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:522)
	at org.mozilla.javascript.InterfaceAdapter.invoke(InterfaceAdapter.java:105)
	at org.mozilla.javascript.jdk18.VMBridge_jdk18$1.invoke(VMBridge_jdk18.java:126)
	at com.sun.proxy.$Proxy4.run(Unknown Source)
	at org.itxtech.mcl.script.ScriptManager.phaseBoot(ScriptManager.java:106)
	at org.itxtech.mcl.Loader.lambda$start$3(Loader.java:176)
	at org.itxtech.mcl.Loader.tryCatching(Loader.java:145)
	at org.itxtech.mcl.Loader.start(Loader.java:176)
	at org.itxtech.mcl.Loader.main(Loader.java:68)

截图模式登录框问题

从GitHub下的最新releases,一直有那个登录框的问题啊
截图里登录框巨大,登录又没法记住状态,加cookie也没用
只能是放弃无头模式,每次都手动登录一下才勉强解决
后面改了一下装一个adblock plus,屏蔽了一堆东西
cookie是从editthiscookie里直接导出的
Chrome 92.0.4515.159 32位
默认的UA,iPad
配置

截图UA

user_agent: 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1'

截图宽度

width: 200

截图高度

height: 1024

截图像素比

pixel_ratio: 3

无头模式(后台模式)

headless: false

指定使用的浏览器,Chrome/firefox

browser: Chrome

是否截图模式

setup: true
顺便附自定义规则
t.bilibili.com##.unlogin-popover.unlogin-popover-avatar
t.bilibili.com###van-popover-7903
t.bilibili.com##.van-popover.van-popper
t.bilibili.com##.unlogin-avatar
t.bilibili.com##.nav-search-btn
t.bilibili.com###nav_searchform
t.bilibili.com##.mini-header__content
t.bilibili.com##.mini-header.m-header.mini-type
t.bilibili.com###internationalHeader
t.bilibili.com##.international-header.report-wrap-module
t.bilibili.com##.back-top
t.bilibili.com##.login-tip
t.bilibili.com##.comment-send-lite.no-login
t.bilibili.com##.comment-send.no-login

几个建议

添加订阅时能够直接搜索用户名
视频解析时返回消息自定义 比如播放数点赞数之类的 没记错的话api一次都能拉到
动态也加个和视频一样的手动解析 瞎了
动态可选的包含回复 这个应该用pc的ua就能截图到 emm瞎了x2
可以参考一下原来酷q时代奶牛的b站插件(

提议开播后一段时间停止发送通知

有关监控直播有一个 bug。
启动 bot 时即便距离开播有一段时间了,但还是会发送一个通知。
在一些频道性质的禁言群会构成打扰。
请问将来会把这个问题加入计划吗?

不定时重复发送过时消息

上上个星期就开始每天重复了,我还以为是版本太老的问题,结果更新成了1.4.8还是有这个问题。这是刚刚发给我的消息
image

请求优化正则表达式

  1. 遇到如同 https://b23.tv/av979090478/p1 这类链接时会解析两次。
  2. 请问有无白名单,完全匹配过滤常用词,如 AV1(视频编码)等。

插件无法启动,出现 java.lang.NoSuchMethodError

插件无法启动,后台会输出报错java.lang.NoSuchMethodError: 'kotlin.reflect.KType kotlin.jvm.internal.Reflection.mutableCollectionType(kotlin.reflect.KType)'

我试了下1.4.4版本也是同样的问题无法启动,请问这可能是什么原因导致的呢?

我没有安装 mirai-selenium-plugin 插件,是一定要安装这个插件才能正常启动吗。

运行环境:

环境 版本
mirai-console-loader 1.2.2
mirai-console 2.9.1
bilibili-helper 1.4.3
openjdk 11.0.12 2021-07-20
os Debian 4.19.146-1 (2020-09-17)
2022-02-12 23:28:53 E/bilibili-helper: java.lang.NoSuchMethodError: 'kotlin.reflect.KType kotlin.jvm.internal.Reflection.mutableCollectionType(kotlin.reflect.KType)'
java.lang.NoSuchMethodError: 'kotlin.reflect.KType kotlin.jvm.internal.Reflection.mutableCollectionType(kotlin.reflect.KType)'
        at xyz.cssxsh.mirai.plugin.data.BiliTaskData.<clinit>(BiliTaskData.kt:20)
        at xyz.cssxsh.mirai.plugin.BiliHelperPlugin.onEnable(BiliHelperPlugin.kt:24)
        at net.mamoe.mirai.console.internal.plugin.JvmPluginInternal.internalOnEnable$mirai_console(JvmPluginInternal.kt:113)
        at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:158)
        at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt)
        at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt:36)
        at net.mamoe.mirai.console.plugin.PluginManager.enablePlugin(PluginManager.kt:129)
        at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.enableAllLoadedPlugins$mirai_console(PluginManagerImpl.kt:172)
        at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge.doStart$mirai_console(MiraiConsoleImplementationBridge.kt:214)
        at net.mamoe.mirai.console.MiraiConsoleImplementation$Companion.start(MiraiConsoleImplementation.kt:277)
        at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon(MiraiConsoleTerminalLoader.kt:156)
        at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon$default(MiraiConsoleTerminalLoader.kt:155)
        at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.main(MiraiConsoleTerminalLoader.kt:47)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.itxtech.mcl.Utility.bootMirai(Utility.java:83)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:138)
        at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:226)
        at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1692)
        at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:1013)
        at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109)
        at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:412)
        at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3578)
        at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:107)
        at org.mozilla.javascript.ArrowFunction.call(ArrowFunction.java:43)
        at org.mozilla.javascript.InterfaceAdapter.invokeImpl(InterfaceAdapter.java:155)
        at org.mozilla.javascript.InterfaceAdapter.lambda$invoke$0(InterfaceAdapter.java:105)
        at org.mozilla.javascript.Context.call(Context.java:554)
        at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:522)
        at org.mozilla.javascript.InterfaceAdapter.invoke(InterfaceAdapter.java:105)
        at org.mozilla.javascript.jdk18.VMBridge_jdk18$1.invoke(VMBridge_jdk18.java:126)
        at com.sun.proxy.$Proxy4.run(Unknown Source)
        at org.itxtech.mcl.script.ScriptManager.phaseBoot(ScriptManager.java:106)
        at org.itxtech.mcl.Loader.lambda$start$3(Loader.java:176)
        at org.itxtech.mcl.Loader.tryCatching(Loader.java:145)
        at org.itxtech.mcl.Loader.start(Loader.java:176)
        at org.itxtech.mcl.Loader.main(Loader.java:68)

构建Dynamic(627727294429276894)信息失败

发送https://b23.tv/dbr4PET,bot回复For input string: ""

2022-02-16 15:17:56 V/Bot.1234567890: [×××××(123456789)] Catbot(123456789) -> https://b23.tv/dbr4PET
2022-02-16 15:17:56 I/bilibili-helper: Member Catbot(993122529.976722094) 匹配Dynamic(627727294429276894)
2022-02-16 15:17:56 W/bilibili-helper: 构建Dynamic(627727294429276894)信息失败
java.lang.NumberFormatException: For input string: ""
        at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.base/java.lang.Long.parseLong(Long.java:702)
        at java.base/java.lang.Long.parseLong(Long.java:817)
        at xyz.cssxsh.mirai.plugin.BiliBuilderKt$DynamicReplier$1.invokeSuspend(BiliBuilder.kt:37)
        at xyz.cssxsh.mirai.plugin.BiliBuilderKt$DynamicReplier$1.invoke(BiliBuilder.kt)
        at xyz.cssxsh.mirai.plugin.BiliBuilderKt$DynamicReplier$1.invoke(BiliBuilder.kt)
        at xyz.cssxsh.mirai.plugin.BiliBuilderKt$ShortLinkReplier$1.invokeSuspend(BiliBuilder.kt:157)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
        at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

番剧定时任务出错

2021-12-05 22:50:17 W/bilibili-helper: SeasonWaiter with 39431 fail java.util.NoSuchElementException: Key 62050 is missing in the map.
java.util.NoSuchElementException: Key 62050 is missing in the map.
        at kotlin.collections.MapsKt__MapWithDefaultKt.getOrImplicitDefaultNullable(MapWithDefault.kt:24)
        at kotlin.collections.MapsKt__MapsKt.getValue(Maps.kt:344)
        at xyz.cssxsh.mirai.plugin.BiliSeasonWaiter.success(BiliTasker.kt:302)
        at xyz.cssxsh.mirai.plugin.BiliSeasonWaiter.success(BiliTasker.kt:286)
        at xyz.cssxsh.mirai.plugin.Waiter.listen$suspendImpl(BiliTasker.kt:187)
        at xyz.cssxsh.mirai.plugin.Waiter$listen$1.invokeSuspend(BiliTasker.kt)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
        at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

openjdk-17 mirai2.9.0-M1 bilibili-helper1.2.7

Field 'display' is required for type with serial name 'xyz.cssxsh.bilibili.data.DynamicInfo', but it was missing


kotlinx.serialization.MissingFieldException: Field 'display' is required for type with serial name 'xyz.cssxsh.bilibili.data.DynamicInfo', but it was missing
        at kotlinx.serialization.internal.PluginExceptionsKt.throwMissingFieldException(PluginExceptions.kt:20)
        at xyz.cssxsh.bilibili.data.DynamicInfo.<init>(Dynamic.kt:138)
        at xyz.cssxsh.bilibili.data.DynamicInfo$$serializer.deserialize(Dynamic.kt:138)
        at xyz.cssxsh.bilibili.data.DynamicInfo$$serializer.deserialize(Dynamic.kt:138)
        at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63)
        at kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeSerializableValue(TreeJsonDecoder.kt:51)
        at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableValue(Tagged.kt:206)
        at kotlinx.serialization.internal.TaggedDecoder$decodeSerializableElement$1.invoke(Tagged.kt:279)
        at kotlinx.serialization.internal.TaggedDecoder.tagBlock(Tagged.kt:296)
        at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableElement(Tagged.kt:279)
        at xyz.cssxsh.bilibili.data.BiliDynamicInfo$$serializer.deserialize(Dynamic.kt:64)
        at xyz.cssxsh.bilibili.data.BiliDynamicInfo$$serializer.deserialize(Dynamic.kt:64)
        at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63)
        at kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeSerializableValue(TreeJsonDecoder.kt:51)
        at kotlinx.serialization.json.internal.TreeJsonDecoderKt.readJson(TreeJsonDecoder.kt:24)
        at kotlinx.serialization.json.Json.decodeFromJsonElement(Json.kt:119)
        at xyz.cssxsh.bilibili.api.DynamicKt$getDynamicInfo$$inlined$json$1.invokeSuspend(Api.kt:125)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

1.13版新增的 ImageLimit 配置项存在问题

对于1.13版新增的 ImageLimit 配置项,我配置实测后发现,当配置为limit: 0时,仍然会输出所有图片,当配置为limit: 1时,会出现下图里面的情况,只忽略了第二张图片,其他图片仍然正常输出了,另外,建议被忽略的图片可以不用显示“图片[*]忽略”。
hdhjds

Unspported MessageEvent

2022-01-31 16:23:21 E/bilibili-helper: Exception in coroutine BiliListener of bilibili-helper
net.mamoe.mirai.event.ExceptionInEventChannelFilterException: Exception in EventHandler
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:167)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invokeSuspend(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at net.mamoe.mirai.internal.event.Handler.onEvent(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.process(InternalEventListeners.kt:166)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.access$process(InternalEventListeners.kt:1)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt$callAndRemoveIfRequired$2$1.invokeSuspend(InternalEventListeners.kt:132)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: java.lang.IllegalArgumentException: Unsupported MessageEvent: net.mamoe.mirai.event.events.FriendMessageSyncEvent
        at net.mamoe.mirai.console.command.CommandSender$Companion.from(CommandSender.kt:241)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invokeSuspend(BiliListener.kt:16)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:164)
        ... 18 more

2022-01-31 16:23:21 E/bilibili-helper: Exception in coroutine BiliListener of bilibili-helper
net.mamoe.mirai.event.ExceptionInEventChannelFilterException: Exception in EventHandler
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:167)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invokeSuspend(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at net.mamoe.mirai.internal.event.Handler.onEvent(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.process(InternalEventListeners.kt:166)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.access$process(InternalEventListeners.kt:1)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt$callAndRemoveIfRequired$2$1.invokeSuspend(InternalEventListeners.kt:132)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: java.lang.IllegalArgumentException: Unsupported MessageEvent: net.mamoe.mirai.event.events.FriendMessageSyncEvent
        at net.mamoe.mirai.console.command.CommandSender$Companion.from(CommandSender.kt:241)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invokeSuspend(BiliListener.kt:16)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:164)
        ... 18 more

2022-01-31 16:23:21 E/bilibili-helper: Exception in coroutine BiliListener of bilibili-helper
net.mamoe.mirai.event.ExceptionInEventChannelFilterException: Exception in EventHandler
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:167)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invokeSuspend(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at net.mamoe.mirai.internal.event.Handler.onEvent(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.process(InternalEventListeners.kt:166)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.access$process(InternalEventListeners.kt:1)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt$callAndRemoveIfRequired$2$1.invokeSuspend(InternalEventListeners.kt:132)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: java.lang.IllegalArgumentException: Unsupported MessageEvent: net.mamoe.mirai.event.events.FriendMessageSyncEvent
        at net.mamoe.mirai.console.command.CommandSender$Companion.from(CommandSender.kt:241)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invokeSuspend(BiliListener.kt:16)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:164)
        ... 18 more

2022-01-31 16:23:21 E/bilibili-helper: Exception in coroutine BiliListener of bilibili-helper
net.mamoe.mirai.event.ExceptionInEventChannelFilterException: Exception in EventHandler
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:167)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invokeSuspend(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at net.mamoe.mirai.internal.event.Handler.onEvent(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.process(InternalEventListeners.kt:166)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.access$process(InternalEventListeners.kt:1)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt$callAndRemoveIfRequired$2$1.invokeSuspend(InternalEventListeners.kt:132)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: java.lang.IllegalArgumentException: Unsupported MessageEvent: net.mamoe.mirai.event.events.FriendMessageSyncEvent
        at net.mamoe.mirai.console.command.CommandSender$Companion.from(CommandSender.kt:241)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invokeSuspend(BiliListener.kt:16)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:164)
        ... 18 more

2022-01-31 16:23:21 E/bilibili-helper: Exception in coroutine BiliListener of bilibili-helper
net.mamoe.mirai.event.ExceptionInEventChannelFilterException: Exception in EventHandler
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:167)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invokeSuspend(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at net.mamoe.mirai.internal.event.Handler.onEvent(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.process(InternalEventListeners.kt:166)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.access$process(InternalEventListeners.kt:1)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt$callAndRemoveIfRequired$2$1.invokeSuspend(InternalEventListeners.kt:132)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: java.lang.IllegalArgumentException: Unsupported MessageEvent: net.mamoe.mirai.event.events.FriendMessageSyncEvent
        at net.mamoe.mirai.console.command.CommandSender$Companion.from(CommandSender.kt:241)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invokeSuspend(BiliListener.kt:16)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:164)
        ... 18 more

2022-01-31 16:23:21 E/bilibili-helper: Exception in coroutine BiliListener of bilibili-helper
net.mamoe.mirai.event.ExceptionInEventChannelFilterException: Exception in EventHandler
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:167)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invokeSuspend(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at net.mamoe.mirai.internal.event.Handler.onEvent(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.process(InternalEventListeners.kt:166)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.access$process(InternalEventListeners.kt:1)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt$callAndRemoveIfRequired$2$1.invokeSuspend(InternalEventListeners.kt:132)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: java.lang.IllegalArgumentException: Unsupported MessageEvent: net.mamoe.mirai.event.events.FriendMessageSyncEvent
        at net.mamoe.mirai.console.command.CommandSender$Companion.from(CommandSender.kt:241)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invokeSuspend(BiliListener.kt:16)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:164)
        ... 18 more

2022-01-31 16:23:21 E/bilibili-helper: Exception in coroutine BiliListener of bilibili-helper
net.mamoe.mirai.event.ExceptionInEventChannelFilterException: Exception in EventHandler
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:167)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invokeSuspend(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at net.mamoe.mirai.internal.event.Handler.onEvent(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.process(InternalEventListeners.kt:166)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.access$process(InternalEventListeners.kt:1)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt$callAndRemoveIfRequired$2$1.invokeSuspend(InternalEventListeners.kt:132)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: java.lang.IllegalArgumentException: Unsupported MessageEvent: net.mamoe.mirai.event.events.FriendMessageSyncEvent
        at net.mamoe.mirai.console.command.CommandSender$Companion.from(CommandSender.kt:241)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invokeSuspend(BiliListener.kt:16)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:164)
        ... 18 more

2022-01-31 16:23:21 E/bilibili-helper: Exception in coroutine BiliListener of bilibili-helper
net.mamoe.mirai.event.ExceptionInEventChannelFilterException: Exception in EventHandler
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:167)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invokeSuspend(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at net.mamoe.mirai.internal.event.Handler.onEvent(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.process(InternalEventListeners.kt:166)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.access$process(InternalEventListeners.kt:1)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt$callAndRemoveIfRequired$2$1.invokeSuspend(InternalEventListeners.kt:132)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: java.lang.IllegalArgumentException: Unsupported MessageEvent: net.mamoe.mirai.event.events.FriendMessageSyncEvent
        at net.mamoe.mirai.console.command.CommandSender$Companion.from(CommandSender.kt:241)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invokeSuspend(BiliListener.kt:16)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at xyz.cssxsh.mirai.plugin.BiliListener$subscribe$1.invoke(BiliListener.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:164)
        ... 18 more

开播@全员似乎有问题

所有perm赋予@全员权限的群都会发不出来直播推送,实际上有管理权限,控制台log也能看到也显示有mirai:atall
将 mirai-console 里@全员的权限删除后又能正常发出直播推送

[FR] 在重启时忽略积累的动态更新

rt 我bot之前断线3h 然后监听列表有up腹泻式更新动态 一开bot秒刷屏
希望加个配置能忽略一次动态更新
大概想了想实现
启动时发送消息设置为false 检查一次更新就恢复为true
目前可以手改cache的更新日期解决就是了(

搜索指令 无法返回空结果

系统:Ubuntu Server 20.04 LTS
Java:openjdk-16-jre
浏览器:firefox
插件版本:bilibili-helper:v1.0.6-dev-3
chat-command:0.5.1
当搜索指令无法搜索到任何匹配关键词的结果时,不会对该搜索请求进行任何反馈
搜索结果为空时应该会对搜索者反馈搜索失败
截图:
QQ截图20210730162108

[BUG]

老哥,你那个130又出问题了,插件用不了,129没问题

更新后动态监听失效

从1.1.4更新到mcl获取的1.2.1
无法正常订阅b站动态
但发送 /bili-dynamic list 查询返回有订阅信息

是否有办法禁止该插件在某群生效?

bv转发权限我希望在某些群被禁用,但是我并没有找到相关的限制方法。
我的目的是限制指定的群,而其他群则可以正常使用(因为某个群里有另外的b站bot,俩合在一起会永动机)

一个离谱的问题

2022-01-03 17:07:57 W/bilibili-helper: 构建Video(av17)信息失败
java.lang.IllegalStateException: 啥都木有
        at xyz.cssxsh.bilibili.api.VideoKt$getVideoInfo$$inlined$json$1.invokeSuspend(Api.kt:67)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

我知道这是找不到av17,但是我原话是这样的

1641201099429

搜索指令 无法返回结果

运行环境:
OS: Ubuntu 20.04.2.0
Java: openjdk-11-jre

mirai-console: 2.7-M1
mirai-console-terminal: 2.7-M1
mirai-core-all: 2.7-M1
chat-command: 0.5.1

日志:
2021-07-22 14:38:47 W/bilibili-helper: Exception in executing command [mirai:source:[28151],[1872030169]]/bili-search ft 让子弹飞
kotlinx.serialization.MissingFieldException: Fields [aid, badge, cid, from, share_url] are required for type with serial name 'xyz.cssxsh.bilibili.data.SearchSeasonEpisode', but they were missing
at kotlinx.serialization.internal.PluginExceptionsKt.throwMissingFieldException(PluginExceptions.kt:20)
at xyz.cssxsh.bilibili.data.SearchSeasonEpisode.(Search.kt:216)
at xyz.cssxsh.bilibili.data.SearchSeasonEpisode$$serializer.deserialize(Search.kt:216)
at xyz.cssxsh.bilibili.data.SearchSeasonEpisode$$serializer.deserialize(Search.kt:216)
at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63)
at kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeSerializableValue(TreeJsonDecoder.kt:51)
at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableValue(Tagged.kt:206)
at kotlinx.serialization.internal.TaggedDecoder$decodeSerializableElement$1.invoke(Tagged.kt:279)
at kotlinx.serialization.internal.TaggedDecoder.tagBlock(Tagged.kt:296)
at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableElement(Tagged.kt:279)
at kotlinx.serialization.encoding.CompositeDecoder$DefaultImpls.decodeSerializableElement$default(Decoding.kt:535)
at kotlinx.serialization.internal.ListLikeSerializer.readElement(CollectionSerializers.kt:80)
at kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(CollectionSerializers.kt:51)
at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:36)
at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43)
at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63)
at kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeSerializableValue(TreeJsonDecoder.kt:51)
at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableValue(Tagged.kt:206)
at kotlinx.serialization.internal.TaggedDecoder$decodeSerializableElement$1.invoke(Tagged.kt:279)
at kotlinx.serialization.internal.TaggedDecoder.tagBlock(Tagged.kt:296)
at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableElement(Tagged.kt:279)
at xyz.cssxsh.bilibili.data.SearchSeason$$serializer.deserialize(Search.kt:135)
at xyz.cssxsh.bilibili.data.SearchSeason$$serializer.deserialize(Search.kt:135)
at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63)
at kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeSerializableValue(TreeJsonDecoder.kt:51)
at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableValue(Tagged.kt:206)
at kotlinx.serialization.internal.TaggedDecoder$decodeSerializableElement$1.invoke(Tagged.kt:279)
at kotlinx.serialization.internal.TaggedDecoder.tagBlock(Tagged.kt:296)
at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableElement(Tagged.kt:279)
at kotlinx.serialization.encoding.CompositeDecoder$DefaultImpls.decodeSerializableElement$default(Decoding.kt:535)
at kotlinx.serialization.internal.ListLikeSerializer.readElement(CollectionSerializers.kt:80)
at kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(CollectionSerializers.kt:51)
at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:36)
at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43)
at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63)
at kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeSerializableValue(TreeJsonDecoder.kt:51)
at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableValue(Tagged.kt:206)
at kotlinx.serialization.internal.TaggedDecoder$decodeSerializableElement$1.invoke(Tagged.kt:279)
at kotlinx.serialization.internal.TaggedDecoder.tagBlock(Tagged.kt:296)
at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableElement(Tagged.kt:279)
at xyz.cssxsh.bilibili.data.SearchResult$$serializer.deserialize(Search.kt:67)
at xyz.cssxsh.bilibili.data.SearchResult$$serializer.deserialize(Search.kt:67)
at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63)
at kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeSerializableValue(TreeJsonDecoder.kt:51)
at kotlinx.serialization.json.internal.TreeJsonDecoderKt.readJson(TreeJsonDecoder.kt:24)
at kotlinx.serialization.json.Json.decodeFromJsonElement(Json.kt:114)
at xyz.cssxsh.bilibili.api.SearchKt$searchFT$$inlined$json$1.invokeSuspend(Api.kt:101)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

Cookie异常,b站依然提示无法登录

这个应该时ktor的问题吧,我添加cookie后请求b站回复的接口 https://api.bilibili.com/x/msgfeed/reply
提示用户未登录,
ZQYWM$YG(UX61%UTY `I04J

b站的原始请求
10)F4OQ5Q~@TT(MFBE K)1B

应该时cookie之间少了一个空格?
我自己直接设置header请求是成功的
O2M IO$3($L0`QU@GYEYAT

番剧订阅器订阅出错

2021-12-05 22:50:17 W/bilibili-helper: SeasonWaiter with 39431 fail java.util.NoSuchElementException: Key 62050 is missing in the map.
--
  | java.util.NoSuchElementException: Key 62050 is missing in the map.
  | at kotlin.collections.MapsKt__MapWithDefaultKt.getOrImplicitDefaultNullable(MapWithDefault.kt:24)
  | at kotlin.collections.MapsKt__MapsKt.getValue(Maps.kt:344)
  | at xyz.cssxsh.mirai.plugin.BiliSeasonWaiter.success(BiliTasker.kt:302)
  | at xyz.cssxsh.mirai.plugin.BiliSeasonWaiter.success(BiliTasker.kt:286)
  | at xyz.cssxsh.mirai.plugin.Waiter.listen$suspendImpl(BiliTasker.kt:187)
  | at xyz.cssxsh.mirai.plugin.Waiter$listen$1.invokeSuspend(BiliTasker.kt)
  | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
  | at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
  | at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
  | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
  | at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
  | at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
  | at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
  | at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
  | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
  | at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
  | at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
  | at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
  | at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
  | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
  | at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
  | at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
  | at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15)
  | at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93)
  | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
  | at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
  | at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
  | at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
  | at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
  | at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

Mirai版本:2.9.0-RC
Bili-helper版本:1.2.9
Selenium使用Edge

启动时报 Cannot load plugin bilibili-helper v1.0.7

2021-08-17 16:46:22 E/main: Failed to init MiraiConsole.
java.lang.IllegalStateException: Plugin 'bilibili-helper' is already loaded and cannot be reloaded.
at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.load(BuiltInJvmPluginLoaderImpl.kt:105)
at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.load(JvmPluginLoader.kt)
at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.load(JvmPluginLoader.kt:36)
at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.loadPluginNoEnable(PluginManagerImpl.kt:85)
at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.loadAllPluginsUsingBuiltInLoaders$mirai_console(PluginManagerImpl.kt:141)
at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge.doStart$mirai_console(MiraiConsoleImplementationBridge.kt:157)
at net.mamoe.mirai.console.MiraiConsoleImplementation$Companion.start(MiraiConsoleImplementation.kt:276)
at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon(MiraiConsoleTerminalLoader.kt:152)
at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon$default(MiraiConsoleTerminalLoader.kt:151)
at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.main(MiraiConsoleTerminalLoader.kt:47)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.itxtech.mcl.Utility.bootMirai(Utility.java:83)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:138)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:226)
at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1692)
at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:1013)
at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:412)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3578)
at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:107)
at org.mozilla.javascript.ArrowFunction.call(ArrowFunction.java:43)
at org.mozilla.javascript.InterfaceAdapter.invokeImpl(InterfaceAdapter.java:155)
at org.mozilla.javascript.InterfaceAdapter.lambda$invoke$0(InterfaceAdapter.java:105)
at org.mozilla.javascript.Context.call(Context.java:554)
at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:522)
at org.mozilla.javascript.InterfaceAdapter.invoke(InterfaceAdapter.java:105)
at org.mozilla.javascript.jdk18.VMBridge_jdk18$1.invoke(VMBridge_jdk18.java:126)
at com.sun.proxy.$Proxy4.run(Unknown Source)
at org.itxtech.mcl.script.ScriptManager.phaseBoot(ScriptManager.java:106)
at org.itxtech.mcl.Loader.start(Loader.java:164)
at org.itxtech.mcl.Loader.main(Loader.java:68)

jdk版本导致的编译失败

使用openjdk16.0.2 编译失败,

e: java.lang.ExceptionInInitializerError
        at org.jetbrains.kotlin.com.intellij.pom.java.LanguageLevel.<clinit>(LanguageLevel.java:25)
        at org.jetbrains.kotlin.com.intellij.core.CoreLanguageLevelProjectExtension.<init>(CoreLanguageLevelProjectExtension.java:26)
        at org.jetbrains.kotlin.com.intellij.core.JavaCoreProjectEnvironment.<init>(JavaCoreProjectEnvironment.java:42)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment.<init>(KotlinCoreProjectEnvironment.kt:26)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.<init>(KotlinCoreEnvironment.kt:118)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:420)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.createCoreEnvironment(K2JVMCompiler.kt:226)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:152)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:52)
        at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:88)
        at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)
        at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)
        at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:371)
        at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:105)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:249)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.access$compileIncrementally(IncrementalCompilerRunner.kt:38)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner$compile$2.invoke(IncrementalCompilerRunner.kt:80)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:92)
        at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:602)
        at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:93)
        at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1644)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
        at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
        at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:691)
        at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
        at java.base/java.lang.Thread.run(Thread.java:831)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected void java.util.ResourceBundle.setParent(java.util.ResourceBundle) accessible: module java.base does not "opens java.util" to unnamed module @5bcea91b
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
        at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
        at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
        at org.jetbrains.kotlin.com.intellij.util.ReflectionUtil.makeAccessible(ReflectionUtil.java:252)
        at org.jetbrains.kotlin.com.intellij.util.ReflectionUtil.getDeclaredMethod(ReflectionUtil.java:269)
        at org.jetbrains.kotlin.com.intellij.DynamicBundle.<clinit>(DynamicBundle.java:22)
        ... 38 more


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':buildSrc:compileKotlin'.

好像是jdk新版本对旧版本的兼容性问题?请问能否提供一下jdk版本?

1.2.2无法启动

 14:11:53 [INFO] Verifying "net.mamoe:mirai-console" version 2.8.0-RC
 14:11:53 [INFO] Verifying "net.mamoe:mirai-console-terminal" version 2.8.0-RC
 14:11:53 [INFO] Verifying "net.mamoe:mirai-core-all" version 2.8.0-RC
 14:11:53 [INFO] Verifying "net.mamoe:chat-command" version 0.5.1
 14:11:53 [INFO] Verifying "io.github.karlatemp:luckperms" version 2.5-RC-dev-3+5.3-SNAPSHOT
 14:11:53 [INFO] Verifying "xyz.cssxsh:bilibili-helper" version 1.2.2
 14:11:54 [WARNING] Package "net.mamoe:chat-command" requires "net.mamoe:mirai-console" version 2.0-RC. Current version is 2.8.0-RC
�[92m2021-11-09 14:11:54 I/main: Starting mirai-console...�[0m�[m
�[92m2021-11-09 14:11:55 I/main: Backend: version 2.8.0-RC, built on 2021-10-31 05:53:59.�[0m�[m
�[92m2021-11-09 14:11:55 I/main: Frontend Terminal: version 2.8.0-RC, provided by Mamoe Technologies�[0m�[m
�[92m2021-11-09 14:11:55 I/main: Welcome to visit https://mirai.mamoe.net/�[0m�[m
�[31m2021-11-09 14:11:55 E/main: Failed to init MiraiConsole.
net.mamoe.mirai.console.internal.util.ServiceLoadException: Could not load service xyz.cssxsh.mirai.plugin.BiliHelperPlugin.
	at net.mamoe.mirai.console.internal.util.PluginServiceHelper.loadService(PluginServiceHelper.kt:60)
	at net.mamoe.mirai.console.internal.util.PluginServiceHelper.loadAllServices(PluginServiceHelper.kt:42)
	at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl$extractPlugins$findAllInstances$2.invoke(BuiltInJvmPluginLoaderImpl.kt:76)
	at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl$extractPlugins$findAllInstances$2.invoke(BuiltInJvmPluginLoaderImpl.kt:71)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:210)
	at kotlin.sequences.FlatteningSequence$iterator$1.ensureItemIterator(Sequences.kt:314)
	at kotlin.sequences.FlatteningSequence$iterator$1.hasNext(Sequences.kt:303)
	at kotlin.sequences.TransformingSequence$iterator$1.hasNext(Sequences.kt:214)
	at kotlin.sequences.TransformingSequence$iterator$1.hasNext(Sequences.kt:214)
	at kotlin.sequences.FlatteningSequence$iterator$1.ensureItemIterator(Sequences.kt:316)
	at kotlin.sequences.FlatteningSequence$iterator$1.hasNext(Sequences.kt:303)
	at kotlin.sequences.SequencesKt___SequencesKt.toCollection(_Sequences.kt:786)
	at kotlin.sequences.SequencesKt___SequencesKt.toSet(_Sequences.kt:827)
	at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.extractPlugins(BuiltInJvmPluginLoaderImpl.kt:95)
	at net.mamoe.mirai.console.plugin.loader.AbstractFilePluginLoader.listPlugins(FilePluginLoader.kt:51)
	at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.listPlugins(JvmPluginLoader.kt)
	at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.listAndSortAllPlugins(PluginManagerImpl.kt:186)
	at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.findAndSortAllPluginsUsingBuiltInLoaders(PluginManagerImpl.kt:130)
	at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.loadAllPluginsUsingBuiltInLoaders$mirai_console(PluginManagerImpl.kt:140)
	at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge.doStart$mirai_console(MiraiConsoleImplementationBridge.kt:157)
	at net.mamoe.mirai.console.MiraiConsoleImplementation$Companion.start(MiraiConsoleImplementation.kt:276)
	at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon(MiraiConsoleTerminalLoader.kt:152)
	at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon$default(MiraiConsoleTerminalLoader.kt:151)
	at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.main(MiraiConsoleTerminalLoader.kt:47)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.itxtech.mcl.Utility.bootMirai(Utility.java:76)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:138)
	at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:226)
	at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1692)
	at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:1013)
	at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109)
	at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:412)
	at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3578)
	at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:107)
	at org.mozilla.javascript.ArrowFunction.call(ArrowFunction.java:43)
	at org.mozilla.javascript.InterfaceAdapter.invokeImpl(InterfaceAdapter.java:155)
	at org.mozilla.javascript.InterfaceAdapter.lambda$invoke$0(InterfaceAdapter.java:105)
	at org.mozilla.javascript.Context.call(Context.java:554)
	at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:522)
	at org.mozilla.javascript.InterfaceAdapter.invoke(InterfaceAdapter.java:105)
	at org.mozilla.javascript.jdk18.VMBridge_jdk18$1.invoke(VMBridge_jdk18.java:126)
	at com.sun.proxy.$Proxy4.run(Unknown Source)
	at org.itxtech.mcl.script.ScriptManager.phaseBoot(ScriptManager.java:101)
	at org.itxtech.mcl.Loader.start(Loader.java:129)
	at org.itxtech.mcl.Loader.main(Loader.java:53)
Caused by: java.lang.NoClassDefFoundError: Lorg/openqa/selenium/remote/RemoteWebDriver;
	at java.base/java.lang.Class.getDeclaredFields0(Native Method)
	at java.base/java.lang.Class.privateGetDeclaredFields(Unknown Source)
	at java.base/java.lang.Class.getDeclaredField(Unknown Source)
	at kotlin.reflect.jvm.internal.KClassImpl$Data$objectInstance$2.invoke(KClassImpl.kt:115)
	at kotlin.reflect.jvm.internal.ReflectProperties$LazyVal.invoke(ReflectProperties.java:62)
	at kotlin.reflect.jvm.internal.ReflectProperties$Val.getValue(ReflectProperties.java:31)
	at kotlin.reflect.jvm.internal.KClassImpl$Data.getObjectInstance(KClassImpl.kt)
	at kotlin.reflect.jvm.internal.KClassImpl.getObjectInstance(KClassImpl.kt:242)
	at net.mamoe.mirai.console.internal.util.PluginServiceHelper.loadService(PluginServiceHelper.kt:52)
	... 51 more
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.remote.RemoteWebDriver
	at net.mamoe.mirai.console.internal.plugin.JvmPluginClassLoader.findClass$mirai_console(JvmPluginClassLoader.kt:110)
	at net.mamoe.mirai.console.internal.plugin.JvmPluginClassLoader.findClass(JvmPluginClassLoader.kt:51)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
	... 60 more

图片缓存 清理

监听到达一定数量时,图片缓存文件夹变得极为巨大,目前在用crontab定期删除,是否考虑开发在发送图片成功后删除图片的功能?

FireFox 浏览器无法使用 WebGL 在 headless 下

运行环境:
OS: Ubuntu 20.04.2.0
Java: openjdk-11-jre

mirai-console: 2.7-M1
mirai-console-terminal: 2.7-M1
mirai-core-all: 2.7-M1
chat-command: 0.5.1

日志:

 02:48:27 [INFO] iTXTech Mirai Console Loader version 1.1.0-beta.1-982f9f4
 02:48:27 [INFO] https://github.com/iTXTech/mirai-console-loader
 02:48:27 [INFO] This program is licensed under GNU AGPL v3
 02:48:27 [DEBUG] Loading script: repo.js
 02:48:27 [DEBUG] Loading script: boot.js
 02:48:27 [DEBUG] Loading script: config.js
 02:48:27 [DEBUG] Loading script: announcement.js
 02:48:27 [DEBUG] Loading script: updater.js
 02:48:27 [DEBUG] Loading script: oraclejdk.js
 02:48:27 [INFO] Fetching Mirai Console Loader Announcement...
 02:48:27 [INFO] Mirai Console Loader Announcement:
Mirai Console Loader 公告栏

[mirai-console] 最近, 项目组发现了权限系统可能会被错误的提前加载导致的3rd权限系统无法正确加载

于是决定, 于 2.6 起, 超前访问权限系统将得到一个错误并中断插件加载, 请各开发者及时检查

影响范围: https://github.com/mamoe/mirai-console/pull/307


 02:48:27 [INFO] Verifying "net.mamoe:mirai-console" version 2.7-M1
 02:48:28 [INFO] Verifying "net.mamoe:mirai-console-terminal" version 2.7-M1
 02:48:28 [INFO] Verifying "net.mamoe:mirai-core-all" version 2.7-M1
 02:48:28 [INFO] Verifying "net.mamoe:chat-command" version 0.5.1
 02:48:28 [WARNING] Package "net.mamoe:chat-command" requires "net.mamoe:mirai-console" version 2.0-RC. Current version is 2.7-M1                                               
2021-07-07 02:48:28 I/main: Starting mirai-console...
2021-07-07 02:48:28 I/main: Backend: version 2.7-M1, built on 2021-06-19 18:21:33.
2021-07-07 02:48:28 I/main: Frontend Terminal: version 2.7-M1, provided by Mamoe Technologies                                                                                   
2021-07-07 02:48:28 I/main: Welcome to visit https://mirai.mamoe.net/
2021-07-07 02:48:28 I/plugin: Successfully loaded plugin Chat Command
2021-07-07 02:48:29 I/plugin: Successfully loaded plugin bilibili-helper
2021-07-07 02:48:29 I/main: Prepared built-in commands: autoLogin, help, login, permission, status, stop                                                                        
1625626109459   geckodriver     INFO    Listening on 127.0.0.1:4826
*** You are running in headless mode.
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
console.warn: SearchSettings: "get: No settings file exists, new profile?" (new NotFoundError("Could not open the file at /tmp/rust_mozprofile5h9dj5/search.json.mozlz4", (void 0)))
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
DevTools listening on ws://localhost:34701/devtools/browser/1df22a00-5597-49f0-ba03-e352e53d8023
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
JavaScript warning: https://s1.hdslb.com/bfs/seed/log/report/log-reporter.js, line 1: WebGL warning: <Create>: Can't use WebGL in headless mode (https://bugzil.la/1375585).
JavaScript warning: https://s1.hdslb.com/bfs/seed/log/report/log-reporter.js, line 1: Failed to create WebGL context: WebGL creation failed: 
* Can't use WebGL in headless mode (https://bugzil.la/1375585). ()
JavaScript warning: https://s1.hdslb.com/bfs/seed/log/report/log-reporter.js, line 1: WebGL warning: <Create>: Can't use WebGL in headless mode (https://bugzil.la/1375585).
JavaScript warning: https://s1.hdslb.com/bfs/seed/log/report/log-reporter.js, line 1: Failed to create WebGL context: WebGL creation failed: 
* Can't use WebGL in headless mode (https://bugzil.la/1375585). ()
JavaScript warning: https://s1.hdslb.com/bfs/seed/log/report/log-reporter.js, line 1: WebGL warning: <Create>: Can't use WebGL in headless mode (https://bugzil.la/1375585).
JavaScript warning: https://s1.hdslb.com/bfs/seed/log/report/log-reporter.js, line 1: Failed to create WebGL context: WebGL creation failed: 
* Can't use WebGL in headless mode (https://bugzil.la/1375585). ()
JavaScript warning: https://s1.hdslb.com/bfs/seed/log/report/log-reporter.js, line 1: WebGL warning: <Create>: Can't use WebGL in headless mode (https://bugzil.la/1375585).
JavaScript warning: https://s1.hdslb.com/bfs/seed/log/report/log-reporter.js, line 1: Failed to create WebGL context: WebGL creation failed: 
* Can't use WebGL in headless mode (https://bugzil.la/1375585). ()
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
2021-07-07 02:48:31 I/main: 2 plugin(s) enabled.
2021-07-07 02:48:31 I/main: mirai-console started successfully.
> [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
JavaScript error: , line 0: uncaught exception: Object
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
login
2021-07-07 02:49:42 I/Mirai: Mirai 正在使用桌面环境. 如遇到验证码将会弹出对话框. 可添加 JVM 属性 `mirai.no-desktop` 以关闭.
2021-07-07 02:49:42 I/Mirai: Mirai is using desktop. Captcha will be thrown by window popup. You can add `mirai.no-desktop` to JVM properties (-Dmirai.no-desktop) to disable it.
2021-07-07 02:49:42 W/stderr: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
2021-07-07 02:49:42 W/stderr: SLF4J: Defaulting to no-operation (NOP) logger implementation
2021-07-07 02:49:42 W/stderr: SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
2021-07-07 02:49:42 I/Bot.0123456789: [AccountSecretsManager] Loaded account secrets from local cache.
2021-07-07 02:49:43 I/Bot.0123456789: [AccountSecretsManager] Saved account secrets to local cache for fast login.
2021-07-07 02:49:43 I/Bot.0123456789: Login successful.
2021-07-07 02:49:44 V/Bot.0123456789: Event: BotOnlineEvent(bot=Bot(0123456789))
2021-07-07 02:49:44 I/Bot.0123456789: Bot login successful.
白 (0123456789) Login successful
2021-07-07 02:50:03 V/Bot.0123456789: [xxxx(xxxx)] 我(xxxxx) -> /bili-search user 神奇陆夫人
> stop
Stopping mirai-console
2021-07-07 02:50:20 I/Bot.0123456789: Bot cancelled: Job was cancelled
> [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
!!! error running onStopped callback: TypeError: callback is not a function
1625626221471   RemoteAgent     ERROR   unable to stop listener: [Exception... "Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIWindowMediator.getEnumerator]"  nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)"  location: "JS frame :: chrome://remote/content/cdp/observers/TargetObserver.jsm :: stop :: line 64"  data: no] Stack trace: stop()@TargetObserver.jsm:64
unwatchForTabs()@TargetList.jsm:70
unwatchForTargets()@TargetList.jsm:37
destructor()@TargetList.jsm:109
close()@RemoteAgent.jsm:136
mirai-console stopped successfully.

安装了Firefox仍提醒需安装firefox或chrome

运行环境:
windows server 2016 Datacenter

Mirai Console Loader version 1.2.2-60c67fb
bilibili-helper v1.0.7
Chat Command v0.5.0

输出日志:

 15:31:39 [INFO] iTXTech Mirai Console Loader version 1.2.2-60c67fb
  15:31:39 [INFO] https://github.com/iTXTech/mirai-console-loader
  15:31:39 [INFO] This program is licensed under GNU AGPL v3
  15:31:41 [INFO] Fetching Mirai Console Loader Announcement...
  15:31:41 [INFO] Mirai Console Loader Announcement:
Mirai Console Loader 公告栏

[mirai-console] 最近, 项目组发现了权限系统可能会被错误的提前加载导致的3rd权限系统无法正确加载

于是决定, 于 2.6 起, 超前访问权限系统将得到一个错误并中断插件加载, 请各开发者及时检查

影响范围: https://github.com/mamoe/mirai-console/pull/307


  15:31:41 [INFO] Verifying "net.mamoe:mirai-console" v2.7-RC
  15:31:42 [INFO] Verifying "net.mamoe:mirai-console-terminal" v2.7-RC
  15:31:42 [INFO] Verifying "net.mamoe:mirai-core-all" v2.7-RC
  15:31:42 [INFO] Verifying "org.itxtech:mcl-addon" v1.2.2
2021-08-16 15:31:45 I/main: Starting mirai-console...
2021-08-16 15:31:45 I/main: Backend: version 2.7-RC, built on 2021-08-11 19:33:22.
2021-08-16 15:31:45 I/main: Frontend Terminal: version 2.7-RC, provided by Mamoe Technologies
2021-08-16 15:31:45 I/main: Welcome to visit https://mirai.mamoe.net/
2021-08-16 15:31:45 I/plugin: Successfully loaded plugin bilibili-helper v1.0.7
2021-08-16 15:31:45 I/plugin: Successfully loaded plugin SimpleGroupAuth v0.1.1
2021-08-16 15:31:45 I/plugin: Successfully loaded plugin Chat Command v0.5.0
2021-08-16 15:31:45 I/plugin: Successfully loaded plugin TimerTaskMsg v0.1.0
2021-08-16 15:31:45 I/plugin: Successfully loaded plugin MCL Addon v1.2.2
2021-08-16 15:31:45 I/plugin: Successfully loaded plugin net.mamoe.mirai-api-http v2.2.0
2021-08-16 15:31:45 I/plugin: Successfully loaded plugin 点歌插件 v1.1.2
2021-08-16 15:31:45 I/plugin: Successfully loaded plugin iam.xiaoan.RanImage v1.0-SNAPSHOT
2021-08-16 15:31:46 I/main: Prepared built-in commands: autoLogin, help, login, permission, status, stop
2021-08-16 15:31:47 W/bilibili-helper: 请安装 Chrome 或者 Firefox 浏览器 java.lang.UnsupportedOperationException: Unsupported browser: IE.HTTPS, Only chrome/firefox supported
2021-08-16 15:31:47 I/bilibili-helper: DYNAMIC缓存清理任务开始运行,间隔1h
2021-08-16 15:31:47 I/bilibili-helper: VIDEO缓存清理任务开始运行,间隔1h
2021-08-16 15:31:47 I/bilibili-helper: LIVE缓存清理任务开始运行,间隔1h
2021-08-16 15:31:47 I/bilibili-helper: SEASON缓存清理任务开始运行,间隔1h
2021-08-16 15:31:47 I/bilibili-helper: EPISODE缓存清理任务开始运行,间隔1h
2021-08-16 15:31:47 I/bilibili-helper: USER缓存清理任务开始运行,间隔1h
2021-08-16 15:31:47 I/bilibili-helper: EMOJI缓存清理任务开始运行,间隔1h
2021-08-16 15:31:47 I/SimpleGroupAuth: SimpleGroupAuth已启动
2021-08-16 15:31:47 I/TimerTaskMsg: Plugin loaded
2021-08-16 15:31:47 I/TimerTaskMsg: forward......
2021-08-16 15:31:47 I/MCL Addon: iTXTech MCL Version: 1.2.2-60c67fb

其他正常运行

插件调用浏览器后未自动结束浏览器进程,间接导致内存占用增加

之前没注意过这个,刚刚有群友提醒机器人的内存使用率比较高,然后我去服务器的任务管理器看了才发现有一大堆浏览器的进程(粗略估计应该有六七十个),虽然每个进程占用的内存最多也就几M的样子,不过数量多了占的内存还是比较可观,标题的原因只是我的推测(也可能是多次重启Mirai导致的),如果确实是这个原因的话,建议大佬考虑可以在这方面优化一下,以下是问题相关信息。

附图:
image
image

以下为插件运行环境信息(需要更多可以问我):
服务器配置:2C4G
操作系统:Windows Server 2012 R2 DataCenter 64bitCN
Mirai版本:2.7.0
插件版本:1.1.3

可能涉及到的配置项内容:

# 截图UA
user_agent: 'Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/84.0.4147.105 Mobile Safari/537.36 SearchCraft/2.8.2 baiduboxapp/3.2.5.10'
# 截图宽度
width: 600
# 截图高度
height: 1200
# 截图像素比
pixel_ratio: 1
# 无头模式(后台模式)
headless: true
# 指定使用的浏览器,Chrome/firefox
browser: Chrome
# 是否截图模式
setup: true

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.