@colter23
以后考虑加个原子锁
cssxsh 发布的帖子
-
RE: B站订阅插件,动态、视频、直播订阅 @全体成员
@orisland
订阅成功之后,机器人会回复
@xxx监听设置成功的消息
视频和动态轮询时间都是10分钟
暂时还不考虑用户设置,因为b站有反爬锁ip的机制,爬取极限是多少还不清楚 -
RE: 插件打包时如何带上依赖的 jar
dependencies { implementation files('libs/sqlite-jdbc-3.7.2.jar') }
话说你都用gradle了,直接引用maven库不好吗
dependencies { implementation 'org.xerial:sqlite-jdbc:3.34.0' }
-
RE: Selenium不能在MiraiConsole启动?
看报错是 Java Service 没有加载成功 我也遇到了一样的错误,解决方法是 切换当前线程的类加载器,以确保服务正确加载
-
Mirai Content Censor 群内容审核插件
Mirai Content Censor
基于 Mirai Console 和 百度AI内容审核 的自动禁言助手
本插件原命名
Mirai-AntiPorn-Plugin
设置
百度AI
使用前请根据 https://ai.baidu.com/ai-doc/ANTIPORN/Wkhu9d5iy 的步骤申请APP 获取
APP_ID
API_KEY
SECRET_KEY
在安装插件,并启动Mirai Console
后,config/content-censor
目录下会生成ContentCensor.yml
对应修改文件中APP_ID
API_KEY
SECRET_KEY
的值机器人将会在作为群主或者管理员身份的情况下工作,即群消息内容审核(文本,图片,语音)
机器人的审核规则请到 https://ai.baidu.com/censoring#/strategylist 修改策略审核内容
位于
config/ContentCensor.yml
mute
禁言时间,单位秒,默认1分钟plain
是否检查文本,默认 trueimage
是否检查图片,默认 falseaudio
是否检查语音,默认 false
避开审查
拥有权限
io.github.gnuf0rce.content-censor:no-censor
的用户将不会被检测安装
MCL 指令安装
./mcl --update-package io.github.gnuf0rce:mirai-content-censor --channel stable --type plugin
手动安装
- 运行 Mirai Console 生成
plugins
文件夹 - 从 Releases 下载
jar
并将其放入plugins
文件夹中
TODO
- 配置禁言时间
- QPS延迟
- 视频内容审核
- 转发消息内容审核
-
Pixiv Client , Kotlin Api Lib 预发布
Pixiv Client
基于Ktor的 Pixiv Kotlin SDK
常用的API都已经基本完成
目前需要优化和完善部分API相关项目 Pixiv Helper Mirai Console Plugin 也在预发布状态
-
B站订阅插件,动态、视频、直播订阅 @全体成员
BiliBili Helper
基于 Mirai Console 的 哔哩哔哩 订阅插件
使用前应该查阅的相关文档或项目
从 1.2.5 版本开始 将截图部分功能的转移至 mirai-selenium-plugin
截图功能的启用需要其作为前置插件
关于截图支持的环境请浏览 运行平台支持
直播 @全体成员 详见配置此设置 1.5.0 废除, 改用指令配置
自动触发URL解析 详见 信息解析 指令
消息 模板 详见配置(自 1.4.0 起截图功能由模板内容来配置)指令
注意: 使用前请确保可以 在聊天环境执行指令
带括号的/
前缀是可选的
<...>
中的是指令名,由空格隔开表示或,选择其中任一名称都可执行例如/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/at
的target
是 被许可人 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
子指令
cron
的cron
参数是 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动态> <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/ss38353 的
38353
可以通过 搜索指令 搜索番剧 获得链接信息解析指令
指令 描述 /<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
设置
位于
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 网页识别设备类型,进而影响截图的效果
iPadMozilla/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
iPhoneMozilla/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
MacMozilla/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安装
MCL 指令安装
./mcl --update-package xyz.cssxsh:bilibili-helper --channel stable --type plugin
手动安装
- 运行 Mirai Console 生成
plugins
文件夹 - 从 Releases 下载
jar
并将其放入plugins
文件夹中
截图前置
./mcl --update-package xyz.cssxsh.mirai:mirai-selenium-plugin --channel stable --type plugin
TODO
- 完善剧集订阅
- 自动清理图片缓存