-
大佬, 大神
等等称呼并不会给开发者带来实际的收益,
你口中的大佬
一天也是只有24小时的时间,
并且已经因为写代码消耗了不少,
所以请尽可能详细的描述你的问题和需求,减少时间的浪费。 -
良好的代码/日志排版 阅读会更舒服
-
日志最好能是复制文本,而不是截图。方便把关键信息复制出来检索。
-
使用 插件/软件 前,要通读 readme
-
不推荐开启的功能 可能是实验性或者不可控的 所以开启之后不一定能带来更好的效果
-
影响下载速度的原因有 网络带宽,运营商(
电信、移动,联通
), Dns/Hosts, 丢包率, 代理 等等,只有一句下载很慢
,开发者只能对着空气分析
cssxsh 发布的最佳帖子
-
被用户气晕,倒点垃圾
-
一些碎碎念
本贴只接受补充建议,不接受提问
Mirai 与 MCL
MCL 是指 mirai-console-loader
项目地址 https://github.com/iTXTech/mirai-console-loaderMirai 是指 mirai-core 或者 mirai-console
项目地址 https://github.com/mamoe/miraiMCL 名字的意思是
mirai-console
启动器/加载器
是用来管理mirai-console
及mirai-console
插件的
管理是指自动下载和版本检查之类的功能
目前只支持从maven下载插件(本来有规划插件中心的,但是鸽了)提供
QQ Bot
功能的是mirai-console
,MCL本身不提供功能
而且两种本身相互独立,即MCL
的版本不影响mirai
的功能,反之mirai
的版本不影响MCL
的功能不要把
MCL
和mirai
划等号,这会带来一些问题,
比如提交 issue 时要求提交mirai
版本,却有人提交了MCL
的版本MCL
启动之后先出现的是 MCL 的日志,他会显示mirai
及mirai
插件的加载情况
然后从I/main: Starting mirai-console...
开始就是mirai
的日志有时候
MCL
更新插件不及时
原因是 MCL 默认使用 阿里云的maven伪镜像
,伪镜像
更新不及时导致的MCL 的目录结构一般是这样的
MCL ├───mcl.jar ├───mcl.cmd (WIN启动脚本) ├───mcl.sh (Linux/MACOS启动脚本) ├───bots (bot数据目录) │ ├───123456 │ │ ├───device.json │ │ ├───cache │ │ └───logs │ └───114514 │ ├───device.json │ ├───cache │ └───logs ├───config (配置目录) │ ├───Console │ │ ├───AutoLogin.yml │ │ ├───Command.yml │ │ ├───ExtensionSelector.yml │ │ ├───Logger.yml │ │ ├───PermissionService.yml │ │ └───PluginDependencies.yml │ └───net.mamoe.mirai-api-http │ └───setting.yml ├───data (数据目录) ├───libs (库目录,里面有mirai本体) ├───logs (日志目录,里面有日志文件) ├───plugins (插件目录) ├───plugin-libraries (插件库目录) └───plugin-shared-libraries (插件共享库目录) └───libraries.txt
Mirai API HTTP
项目地址 https://github.com/project-mirai/mirai-api-http
提供
HTTP API
的中间件
配置文件setting.yml
所在请查阅上面的 MCL 文件树Mirai Native
项目地址 https://github.com/iTXTech/mirai-native
兼容酷Q插件的中间件, 需要 32位 Java
但作者很忙没空管理2.14 之后 要正常使用要到
https://github.com/cssxsh/mirai-native/suites/10378553865/artifacts/512083102
里下载CI最新构建的版本
CI 已过期备份👇
mirai-native-2.0.1.mirai2.jarMiraiAndroid项目地址:https://github.com/mzdluo123/MiraiAndroid
mirai-console 在 Android 中的实现
作者已经不再维护此项目,无法保证可用性
可用性自己试,别TM到处问能不能用,自己试一试不就知道了吗TxCaptchaHelper项目地址:https://github.com/mzdluo123/TxCaptchaHelper
已不再维护
Mirai Compose项目地址:https://github.com/sonder-joker/mirai-compose
mirai-console 的图形化实现
作者已经不再维护此项目,无法保证可用性
可用性自己试,别TM到处问能不能用,自己试一试不就知道了吗 -
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
- 完善剧集订阅
- 自动清理图片缓存
-
升级 mirai 至 2.14.0, 使用新的短信验证方法解决设备验证
这里使用的 mcl 版本是 2.1.2
打开 mcl 工作目录 下的 config.json
编辑packages
将
net.mamoe:mirai-console
,
net.mamoe:mirai-console-terminal
,
net.mamoe:mirai-core-all
中的channel
从stable
改为maven-stable
或者maven
maven-stable
将会更新到 最新标准版2.13.3
maven
将会更新到 最新测试版2.14.0-RC
例如
"net.mamoe:mirai-console": { "channel": "maven-stable", "version": "2.13.3", "type": "libs", "versionLocked": false },
然后使用
./mcl -u
启动
mcl 并触发更新./mcl -u
本身就是启动 mcl 的指令,不是启动 mcl 之后的再输入指令。即你应该启动一个
powershell
或者cmd
之类的终端,然后 使用./mcl -u
启动 mcl可以参考↓
https://wiki.mrxiaom.top/zh/mirai/troubleshoot这样 这样就能升级到具有短信验证的最新 mirai 版本了
目前最新版本是2.13.3
有短信验证版本是 从 2.13.0-RC 开始
包括2.13.0-RC
2.13.0-RC2
2.13.0
,2.13.1
,2.13.2
2.13.3
2.13.4
2.14.0-RC
2.14.0
2.13 之后的 版本关于 mirai-native 有兼容性问题,你可以尝试下载pr中的临时修复版
https://github.com/iTXTech/mirai-native/pull/173
另外,如果
org.itxtech:mcl-addon
一直卡住没升级到2.1.1
你可以尝试修改配置文件"org.itxtech:mcl-addon": { "channel": "maven-stable", "version": "2.1.1", "type": "plugins", "versionLocked": false }
注意这里需要先升级
mcl
版本到2.1.2
如果
maven.aliyun.com
报错,下载失败
可以执行下面这个编辑步骤
编辑maven_repo
加上https://repo.huaweicloud.com/repository/maven
"maven_repo": [ "https://repo.huaweicloud.com/repository/maven", "https://maven.aliyun.com/repository/public" ],
注意
LuckPerms-Mirai
需要 最新版 才适配2.14.0-RC
-
OpenAI ChatBot 插件,已添加预设功能(为啥你们都想整猫娘)
目前
实现了 OpenAI 中 提供的 Completion 和 Image Generation
详细文档请阅读 readme
https://github.com/cssxsh/mirai-openai-plugin#readme有功能BUG或者建议请开 issue
https://github.com/cssxsh/mirai-openai-plugin/issues -
Meme Helper 表情包生成器,游戏王,幻影坦克,支持Termux
更详细内容请阅读 https://github.com/cssxsh/meme-helper#readme
v1.1.4+ 版本已解决兼容性问题,不再需要额外配置
termux 和 windows 7 请看
https://github.com/cssxsh/mirai-skia-plugin/issues/2插件权限ID
xyz.cssxsh.mirai.plugin.meme-helper:*
,使用前授予权限插件依赖于 Mirai Skia Plugin (必要)
插件依赖于 Mirai Hibernate Plugin (不必要)目前插件开发处于实验性阶段
基本功能
PornHub
PornHub Login 生成
示例:
#ph Git Hub
PetPet
摸摸头生成
可以发送
图片
或者@某人
或者QQ号
确定卡片图片
示例:#pet @群主
,#pet 123456
Dear
狂亲表情包生成
可以发送
图片
或者@某人
或者QQ号
确定卡片图片
示例:#dear @群主
,#dear 123456
5000choyen
5000choyen 表情包生成
示例:
#choyen 我想吃 肯德基疯狂星期四套餐
zzkia
诺基亚短信 表情包生成
示例:
#pinyin 无内鬼,来点色图
游戏王
游戏王 表情包生成
可以发送图片
或者@某人
或者QQ号
确定卡片图片
可以使用xxx=yyy
, 指定属性,可选属性有:- 卡片名称:
name
- 怪兽属性:
attr
=dark, divine, earth, fire, light, spell, trap, water, wind
- 怪兽等级:
level
- 怪兽种族:
race
- 怪兽攻击:
atk
- 怪兽防御:
def
- 卡片版权:
copyright
示例:
#spell @Him188 Welcome PR 你可以PR
#trap @Him188 Useless PR 这个还是由我们自己实现
#monster @LaoLittle 援交JD 五元一次
随机表情包
随机表情包一张(通过 Mirai Hibernate Plugin 插件 从消息中收集得到)
示例:
#群友表情
Emoji合成
Google Emoji Kitchen,两个 emoji 合成 一个
示例:
😍+🥵
- 卡片名称:
-
天网开发组,非官方开发交流群
非官方的Mirai开发者交流群
天网开发组: 634148065加群问题请提交github id
例如:
https://github.com/cssxsh 的cssxsh
https://github.com/mzdluo123的mzdluo123
请使用自己的GitHub ID 不要填
cssxsh
、mzdluo123
另外还有个
QQ频道:https://qun.qq.com/qqweb/qunpro/share?_wv=3&_wwv=128&inviteCode=2bR5WD&from=246610&biz=ka
这频道没有限制,都可以加 -
切换类加载器,解决Java Services 加载问题(大概也能解决Spring的上下文问题)
val thread = Thread.currentThread() val oc = thread.contextClassLoader try { thread.contextClassLoader = XXXPlugin::class.java.classLoader // 需要切换上下文的代码 } finally { thread.contextClassLoader = oc }
-
NovelAi Helper AI图片生成, 可对接自建/colab在线运行的 Naifu api
NovelAi Helper
基于 NovelAi 的 AI图片生成插件
使用前应该查阅的相关文档或项目
会自动下载 EhTagTranslation 翻译词库
可以对接 NaiFu 本地搭建
或者你可以 利用 colab 进行在线搭建
将搭建得到的 url 例如https://express-disco-environmental-friends.trycloudflare.com/
填入config.yml
的naifu_api
配置项如果你是用 Stable Diffusion web UI 搭建的API 请移步 https://github.com/cssxsh/stable-diffusion-helper
指令
-
/nai <word>
生成一张图片 官方API需要登录
例如/nai 连裤袜 双马尾
(只有部分词条会自动翻译)
例如/nai swimsuit #seed=12346
(设置种子)
例如/nai swimsuit #steps=3
(AI迭代次数)
例如/nai "swimsuit, ahegao"
(如果需要以,
分割词条, 请用"
包裹)
例如/nai 连裤袜 [图片]
(以图生图,[图片]
是指指令消息中包含有图片)
可用的配置项有
seed
种子
steps
迭代次数
width
宽度
height
高度
scale
比例
sampler
采样器 可选值k_euler_ancestral
,k_euler
,k_lms
,plms
,ddim
strength
以图出图中对原图的更改程度 可选值 [0.00, 0.99]
noise
以图出图中的噪声 可选值 [0.00, 0.99] -
/nai-fu <word>
生成一张图片 自建API需要配置 naifu_api
对接naifu
,naifu
是基于 novelai 官方 web 端的修改版,所以指令用法 和nai
一致 -
/nai-login <mail> <password>
登录账号
例如/nai-login 114514@gmail.com 1919810
-
/nai-reload
重新载入config.yml
配置文件
配置
-
config.yml
配置文件 包括proxy
,doh
,ipv6
,naifu_api
等配置proxy
代理doh
DNSipv6
是否使用ipv6naifu_api
自建 naifu 地址command_interval
命令间隔延迟时间 单位毫秒
-
ban.txt
屏蔽的词条,可热编辑,保存后一段时间会自动启用
NaiFu
naifu
是基于 novelai 官方 web 端的修改版
相关信息可以看这 https://colab.research.google.com/drive/1_Ma71L6uGbtt6UQyA3FjqW2lcZ5Bjck-#scrollTo=KZ88G-iWCTs7TODO
- 更好的翻译
- 更多配置项
-
-
非官方交流频道
用户和开发者都可以加
点击链接加入QQ频道【天网开发组】:https://qun.qq.com/qqweb/qunpro/share?_wv=3&_wwv=128&inviteCode=2bR5WD&from=246610&biz=ka