Mirai-Plugin-HRobot
mirai 群聊机器人插件,支持加群审批、敏感词检测撤回,支持每日定时发送,支持订阅番剧更新、UP 动态更新推送,支持发送涩图(可指定tag)、美图、风景图等,支持随机鸡汤发送,支持坎公骑冠剑会战统计、前线报道、会战报表等功能,支持在线点歌,综合多个音乐平台发送最佳音乐,支持对话聊天,支持自定义关键词回复、正则表达式匹配……更多功能正在开发。
在一些情况下,发送涩图无反应,但查看控制台日志却发送图片已经发送,这种情况可能是由于图片被腾讯 ”拦截“ 了,可以先暂时关闭涩图选项,否则有封号危险。V3.3 版本后可以选择仅发送涩图链接,这或许是个不错的选项。
配置手册:配置手册
在此项目上二次开发或共同建设:开发手册
声明:HRobot 默认将会使用中国标准时间。
快速使用
机器人运行必须要求 Java 运行时环境版本大于等于 11,经过测试,HRobot 适配 mcl-1.2.2、mcl-1.2.1、mcl-2.1.1 版本,其他版本暂未测试,但应该都是支持的。
建议您使用 mirai-console-loader 快速启动 mirai 机器人,下载地址:Releases · iTXTech/mirai-console-loader (github.com),下载后解压文件。
前往Releases · happysnaker/mirai-plugin-HRobot (github.com)选择对应版本下载插件 jar 包 plugin-SNAPSHOT.mirai.jar,将该 jar 包移动至 mcl 文件下的 plugins 文件夹下,然后无须配置任何文件,点击 mcl.cmd 即可启动机器人,注意如果你是第一次下载,你必须先启动一次 mcl.cmd 才会有 plugins 相关文件夹生成。 在 Linux 下需要在当前文件下输入 ./mcl
命令运行可执行文件启动。
如果无限出现 mcl 更新请重启,可尝试使用
./mcl -u
更新 mcl packages 后重试,可参考 issue149
启动后在命令行中键入:login QQ账号 QQ密码
即可登录机器人,登录相关步骤请参考:登录步骤
更多信息请移步mamoe/mirai: 高效率 QQ 机器人支持库 (github.com) 和 iTXTech/mirai-console-loader: 模块化、轻量级且支持完全自定义的 mirai 加载器。 (github.com)
您可以进行相关配置以获得更多高级功能,请移步 配置文件手册
更多功能正在开发,请 STAR 持续关注此项目
使用 Docker 运行
Docker 是每一位程序员必备的技能,如果你的机器上没有安装 Java 环境,强烈建议你使用 Docker 运行,这能省去绝大多数不必要的麻烦。
如果你还不会使用 docker,可参考如下步骤拉取容器并运行:
-
第一步:拉取镜像
# default tag latest docker pull happysnaker/h-robot:latest
自 v3.3 之后,我们会为每个 release 版本维护一个 tag,你可以使用 tag 拉取对应的版本,例如
docker pull happysnaker/h-robot:3.3
,版本号详情请前往 release 页面查看。 -
第二步:前台运行容器
docker run --name h-robot -it happysnaker/h-robot:latest bash
由于涉及到交互问题,我们没有为容器设置任何入口命令,因此必须要在前台运行容器。
-
第三步:登录并配置机器人
在终端与容器交互,你所在的目录应该是 /app 目录,容器已经下载好了 mcl 以及对应版本插件,可以直接运行。
在第一次运行
./mcl
启动机器人后,会自动生成模板配置文件,如有需要可以进行配置。随后重新启动一次机器人,参考上述使用说明登录机器人。如果无限出现 mcl 更新请重启,可尝试使用
./mcl -u
更新 mcl packages 后重试,可参考 issue149当然你也可以使用
docker cp
命令复制配置文件到容器中,这样可以免去登录时可能出现的问题 -
第四步:退出容器但不终止机器人
键入快捷键
ctrl p q
退出容器但不终止容器。当然你也可以使用nohup
或screen
等相关工具来完成此目的。
虽然 Docker 镜像版本与插件版本对应,但在升级插件时建议你在直接在容器内更换插件版本,并重新启动机器人,而不是重新拉取最新版本镜像运行,因为重新运行容器需要重新登录、重新配置机器人,并且可能会出现安全问题。
关键字示例
表格展示为最新版插件功能,默认情况下,与机器人聊天需要@机器人,而其他关键字都无须 @,详情请查看下表中的“示例”,你可以在 历史版本关键字及命令 中找到历史版本对应关键字,在配置文件中你可以选择关闭 @。
特殊关键字 | 示例 | 功能 |
---|---|---|
… | @机器人 你好呀 | 与机器人聊天,在默认情况下这需要 @机器人 才会得到回复,不过你可以进行配置以关闭它,机器人还支持笑话、歌词、计算等其他功能,你可以前往青云客智能聊天机器人API 查看具体信息 |
帮助 | @机器人 帮助 | 显示主菜单 |
前线报道 | 前线报道 | 查看工会战前线Boss信息 |
会战报表 | 会战报表 | 查看当日出刀情况 |
会战统计 | 会战统计 | 统计本次会战所有参与玩家数据,包括对任一 Boss 的数据统计 |
会战统计 | 会战统计好开心 | 统计玩家名为“好开心”的会战数据,此功能会包含出刀数和输出饼状图 |
查刀 | 查刀 成员1 成员2 | 查询 成员1、成员2 的出刀情况,机器人会发送柱状图以表示出刀情况 |
查刀折线图 | 用法同上 | “查刀” 使用柱状图生成,适合多成员比对;“查刀折线图” 使用折线图,适合查看单成员数据,因为多成员可能会出现线“重合问题” |
谁未出刀 | 谁未出刀 | 查看今日谁没出刀,可以通过配置或命令设置公会成员,若不设置,则默认群内所有成员都是公会成员,这可能造成错误@,此功能必须要求群成员昵称完全等于游戏名 |
谁没出刀 | 谁没出刀 | 同谁未出刀 |
催刀 | 催刀 | 机器人 @ 所有未出刀的群成员并催刀,可以通过配置或命令设置公会成员,若不设置,则默认群内所有成员都是公会成员,这可能造成错误@,此功能必须要求群成员昵称完全等于游戏名 |
一键催刀 | 一键催刀 | 机器人 @ 所有未出刀的群成员并催刀,相较于 催刀 而言,此功能还会 @ 出了刀但未出满的成员,可以通过配置或命令设置公会成员,若不设置,则默认群内所有成员都是公会成员,这可能造成错误@,此功能必须要求群成员昵称完全等于游戏名 |
鸡汤 | 鸡汤 | 发送随机鸡汤,有一定的概率发送毒鸡汤,你可以在配置文件中配置这个概率 |
美图 | 美图 | 发送随机二刺螈美图 |
风景图 | 风景图 | 发送随机风景图 |
神秘代码 | 神秘代码萝莉 白丝 | 发送涩图,可指定 tag,tag 之间存在空格 |
涩图 | 涩图萝莉 白丝 | 发送涩图,可指定 tag,tag 之间存在空格,相较于神秘代码而言,此涩图放开 R18 限制,更加涩涩,默认情况下发送图片后 30s 后自动撤回,可通过配置修改撤回时间 |
高清涩图 | 同上 | 画质更高,但接口不稳定,容易出错 |
音乐 | 音乐克罗地亚狂想曲 | 从酷我、QQ、网易云聚合搜索音乐,并发送卡片 |
百度百科 | 百度百科 基金 | 查询 基金 的百度百科释义 |
装弹 | 装弹 | 给俄罗斯轮盘赌手枪装弹,默认将以配置文件的弹夹数为主,也可以添加参数自定义弹数,例如 “装弹 2 6” 表示总弹夹 6 发,真弹 2 发,不过自定义弹夹数需要机器人群管理员或者 QQ 群管理员权限 |
开枪 | 开枪 | 开枪!一旦成员被命中,他将无法继续参与游戏,当剩余下一次开枪必中或者必不中时,游戏结束 |
卸下弹夹 | 卸下弹夹 | 由机器人群管理员或者 QQ 群管理员提前结束游戏 |
疫情 | 深圳疫情 | 查询深圳疫情,可通过 "地点疫情" 查询对应地点疫情,支持国家查询,数据来源:网易新闻 |
自定义关键字 | —— | 可以通过配置或者命令设置自定义关键字及回复,关键字和回复可以是纯文本,也可以是表情、图片等,详情请前往配置手册或命令手册查看。当回复是图片时,请注意图片不一定能在服务器上长期保存。 |
命令
在 2.0 版本后,你可以通过命令的形式远程配置机器人,随时随地进行配置,你只要在群聊中发布相关命令即可。
但是你必须要有对应的权限,在最开始,你需要在配置文件中配置你自己成为超级管理员,随后你便可以通过命令的形式授予或移除他人权限,配置文件相关信息可参考:配置手册。
超级管理员 > 管理员 > 群管理员 > 坎公管理员
下表展示最新版插件插件功能,你可以在 历史版本关键字及命令 中找到历史版本对应信息。
注意,所有命令都必须以 # 开头,如果不执行 保存配置 文件,那么所有命令配置将在机器人关机时丢失。
命令 | 示例 | 功能 | 权限要求 |
---|---|---|---|
#保存配置 | #保存配置 | 将由命令造成的配置更改写入配置文件以持久化,注意这会使得配置文件顺序变乱 | 至少是管理员权限 |
#重载配置 | #重载配置 | 重新载入配置文件 | 至少是管理员权限 |
#查看配置状态 | #查看配置状态 | 查看是否有命令执行成功 | 至少是管理员权限 |
#查看配置日志 | #查看配置日志 | 若有命令执行成功,查看命令执行日志 | 至少是管理员权限 |
#授予管理员权限 | #授予管理员权限 123456 | 权限命令,授予 qq 为 123456 用户管理员权限 | 必须要求自身权限大于被操作对象的权限以及要授予的权限 |
#授予坎公管理员权限 | #授予坎公管理员权限 123456 | 权限命令,授予 qq 为 123456 用户授予坎公管理员权限 | 必须要求自身权限大于被操作对象的权限以及要授予的权限 |
#授予群管理员权限 | #授予群管理员权限 123456 | 权限命令,授予 qq 为 123456 用户群管理员权限 | 必须要求自身权限大于被操作对象的权限以及要授予的权限 |
#移除管理员权限 | #移除管理员权限 123456 | 权限命令,移除 qq 为 123456 用户管理员权限 | 必须要求自身权限大于被操作对象的权限 |
#移除坎公管理员权限 | #移除坎公管理员权限 123456 | 权限命令,移除 qq 为 123456 用户的坎公管理员权限 | 必须要求自身权限大于被操作对象的权限 |
#移除群管理员权限 | #移除群管理员权限 123456 | 权限命令,移除 qq 为 123456 用户群管理员权限 | 必须要求自身权限大于被操作对象的权限 |
#查看权限 | #查看权限 | 权限命令,查看自身的权限,也可以通过“#查看权限 qq” 来查看他人的权限 | 无要求 |
#设置关键字回复 | #设置关键字回复 {自定义关键字} 自定义回复 | 设定全局生效的自定义关键字及回复,关键字及回复都可以是图片或表情,你必须使用 {} 将关键字包裹起来,除关键字和命令之外的其他任何消息都将会被视为回复 | 至少是管理员权限 |
#设置关键字回复 | #设置关键字回复 {#regex#呜*} 你呜尼玛呢 | 默认情况下,机器人通过“编辑距离”算法检测关键词相似度,但当关键字以特殊前缀 “#regex#” 打头时,表示关键字是一个正则表达式,例如 “呜*” 将匹配任意个 “呜“ | 至少是管理员权限 |
#设置关键字回复 | (引用消息)#设置关键字回复 关键字 | 你还可以引用一条消息来代表回复,通过此方式,关键字无须用 {} 包裹,请注意删除 @ 信息,否则关键字必须也要 @ 触发 | 至少是管理员权限 |
#设置群内关键字回复 | 用法同上 | 群内关键字回复只针对发送者的群生效 | 至少是群管理员权限 |
#移除关键字 | #移除关键字 关键字 | 移除一条全局的关键字 | 至少是管理员权限 |
#移除群内关键字 | #移除群内关键字 关键字 | 移除一条发送者群内的关键字 | 至少是群管理员权限 |
#清空关键字 | #清空关键字 | 清空全局的关键字 | 至少是管理员权限 |
#清空群内关键字 | #清空群内关键字 | 清空发送者群内的关键字 | 至少是群管理员权限 |
#清空所有关键字 | #清空所有关键字 | #清空所有(包括群内)的关键字 | 至少是管理员权限 |
#设置坎公公会成员 | #设置坎公公会成员 成员1 成员2 ...... | 将成员1、成员2、......、成员 N 设置为发送者群对应的坎公公会成员(会覆盖原有的配置),执行添加或移除成员前,必须先执行此命令或通过配置文件配置 | 至少是坎公管理员权限 |
#添加坎公公会成员 | #添加坎公公会成员 成员1 成员2 ...... | 在原有配置的基础上,动态的增添成员 | 至少是坎公管理员权限 |
#移除坎公公会成员 | #移除坎公公会成员 成员1 成员2 ...... | 在原有配置的基础上,动态的移除成员 | 至少是坎公管理员权限 |
#清空坎公公会成员 | #清空坎公公会成员 | 清空发送者群对应的坎公公会成员 | 至少是坎公管理员权限 |
#查看坎公公会成员 | #查看坎公公会成员 | 查看坎公公会成员,在配置后可调用此命令查看配置结果 | 至少是坎公管理员权限 |
#设置坎公cookie | #设置坎公cookie 123456 ikhqwe | 将群 123456 的 cookie 设置为 ikhqwe | 至少是管理员权限 |
#开机 | #开机 | 开启机器人 | 至少是超级管理员权限 |
#关机 | #关机 | 关闭机器人,在关机状态下,机器人仅监听开机命令 | 至少是超级管理员权限 |
#开启自动审批 | #开启自动审批 | 开启加群自动审批,机器人会自动审批加群通知,此命令还可以接验证消息,例如 #开启自动审批 123456,那么只有在成员加群验证消息完全匹配时才会同意,否则会拒绝(请赋予机器人管理员) | 至少是管理员权限 |
#关闭自动审批 | #关闭自动审批 | 关闭自动审批 | 至少是管理员权限 |
#开启敏感词检测 | #开启敏感词检测 | 开启敏感词检测,检测敏感词并撤回(请赋予机器人管理员),如需此功能请前往配置文件配置相关信息并配置敏感词库 | 至少是管理员权限 |
#关闭敏感词检测 | #关闭敏感词检测 | 关闭敏感词检测 | 至少是管理员权限 |
#设置定时任务 | #设置定时任务{18-0-10-1}你好呀 | 配置定时任务,以{}包裹配置信息,{}中配置形式为 {hour-minute-count-image},具体含义可前往配置文件查看,暂不支持中途取消任务,可以选择停止机器人运行,如果 count 为 0,当调用保存配置命令时,这将会被写入配置文件持久化 | 至少是管理员权限 |
#开启涩图 | #开启涩图 | 开启涩图功能,默认开启 | 至少是管理员权限 |
#关闭涩图 | #关闭涩图 | 关闭涩图功能,防止群被封 | 至少是管理员权限 |
#设置涩图发送模式 | #设置涩图发送模式 1 | 支持五种发送模式 0、1、2、3、4,数值 0 表示不发送任何消息;数值 1 表示上传腾讯服务器,仅发送内部链接;数值 2 表示仅发送图片,不发送图片链接;数值 3 表示既发送图片,又发送图片链接;4 表示仅发送原始链接(可能会被腾讯拦截) | 至少是管理员权限 |
#订阅 | #订阅 bilibili 0 384136794 qq1 qq2 qq3 ... | 命令格式 #订阅 平台 类型 KEY At成员列表,与配置文件中配置对齐,可前往 配置文件模板 查看说明,其中 pushGroup 会被设置为发送者所在的群。 | 至少是群管理员权限 |
配置
项目秉持着开箱即用的原则,正常使用本插件不需要任何配置,但是如果你需要一些高级功能,此时你必须前往配置文件中进行配置。
HRobot 支持配置文件,配置文件在 mcl/config/com.happysnaker.HRobot/config.yaml 中,您可以手动创建配置文件,不过建议您运行一次 mcl.cmd,这会自动生产配置文件,配置文件相关信息可参考:配置手册。
在 mcl/data/com.happysnaker.HRobot
目录下存在一个 error.log
,这里会记录机器人运行时发生的错误。
在 2.0 版本后,你还可以通过命令的形式远程配置机器人。
贡献
提出你的创意,或者再此源代码上进行二次开发,开发相关手册可参考:开发手册
声明
我不是生产者,我只是 API 的搬运工,由于 API 随时可能停用,故此插件可能随时出问题,请您 star 此项目,一般情况下 API 失效都会第一时间解决(☞ 指重新找一个 API)。
所有使用 API 均为网络上免费 API,如下为主要使用的 API 列表:
- 智能聊天:青云客智能聊天机器人API (qingyunke.com)
- Bing 壁纸:必应每日高清壁纸 - 精彩,从这里开始 (ioliu.cn)
- 聚合音乐:铜钟 - 在一处聆听所有音乐 (tonzhon.com)
- Pivix 涩图:Lolicon API
- 坎公骑冠剑:坎公百宝袋-bigfun社区
- 鸡汤:沙雕 APP 开放接口
- 疫情:实时更新|新冠肺炎疫情动态地图 (163.com)