-
大佬, 大神等等称呼并不会给开发者带来实际的收益,
你口中的大佬一天也是只有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.txtMirai 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 获取用户信息 返回结果包含图片,需要在聊天环境执行指令
消息中包含BV12v411G7dPav2等等 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图片缓存位置, 默认为ImageCachelimit动态 订阅 输出图片数量上限, 默认为16apiAPI 访问间隔时间,单位秒, 默认为10video视频 订阅 访问间隔时间,单位分钟, 默认为10dynamic动态 订阅 访问间隔时间,单位分钟, 默认为10live直播 订阅 访问间隔时间,单位分钟, 默认为30season番剧 订阅 访问间隔时间,单位分钟, 默认为30refresh启动时刷新 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 MicroMessengerwidth截图宽度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.atallTemplate
位于
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 🔄 #shareCookies
位于
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 pluginTODO
- 完善剧集订阅
- 自动清理图片缓存
-
升级 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-RC2.13.0-RC22.13.0,2.13.1,2.13.22.13.32.13.42.14.0-RC2.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代理dohDNSipv6是否使用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