# HuYanSession2 **Repository Path**: mo-language-glass/hu-yan-session2 ## Basic Information - **Project Name**: HuYanSession2 - **Description**: 基于MiraiBot的插件 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-07-29 - **Last Updated**: 2024-08-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HuYanSession2——一款全功能自定义回复插件和小群管 [![](https://img.shields.io/badge/插件类型-Console-%2355db30?style=flat-square)](https://docs.mirai.mamoe.net/console/plugin/Plugins.html) [![](https://img.shields.io/github/v/release/Moyuyanli/HuYanSession?style=flat-square)](https://github.com/Moyuyanli/HuYanSession/releases) [![](https://img.shields.io/github/downloads/Moyuyanli/HuYanSession/v2.2.6/total?style=flat-square)](https://github.com/Moyuyanli/HuYanSession/releases/download/v2.2.6/HuYanSession-2.2.6.mirai2.jar) [![](https://img.shields.io/github/languages/top/Moyuyanli/HuYanSession?style=flat-square)](https://github.com/Moyuyanli/HuYanSession) [![](https://img.shields.io/badge/Gitee-SourceCode-%?style=flat-square)](https://gitee.com/mo-language-glass/hu-yan-session2) [![](https://img.shields.io/badge/Gitee-download-%23d90013?style=flat-square)](https://gitee.com/mo-language-glass/hu-yan-session2/releases/download/v2.1.6/HuYanSession-2.1.6.mirai2.jar) [![](https://img.shields.io/badge/MiraiForum-%E5%A3%B6%E8%A8%80%E4%BC%9A%E8%AF%9D-%23337ab7?style=flat-square)](https://mirai.mamoe.net/topic/1310/%E5%A3%B6%E8%A8%80-%E4%B8%80%E6%AC%BE%E5%90%84%E7%A7%8D%E8%87%AA%E5%AE%9A%E4%B9%89%E5%9B%9E%E5%A4%8D%E6%B6%88%E6%81%AF%E6%8F%92%E4%BB%B6) **%(#ff0000)[上面的download是下载,release是查看所有版本!]** 如果上面加载不出来可以点[这里](https://gitee.com/mo-language-glass/hu-yan-session2/releases/download/v2.1.6/HuYanSession-2.1.6.mirai2.jar)下载 --- ### 迭代 相较于壶言1,壶言2实现了: * 支持多个机器人 * 更便捷的指令并且中英双支持 * 更全面的群管理 * 更多词条参数识别 比如`$at(qq)`将会被转换为@该人 * 更全面的权限系统 权限可以下发到某一条聊天命令! * 更更规整的代码 +=[~~这条才是重点!~~]=+ 方便后续的拓展 --- ## 使用 ### **%(#ff0000)[前置依赖]** [Hibernate 前置插件,ORM 数据库框架,群/好友消息记录](https://mirai.mamoe.net/topic/887) 下载适配版本 [![](https://img.shields.io/github/downloads-pre/cssxsh/mirai-hibernate-plugin/v2.4.3/total?style=flat-square)](https://github.com/cssxsh/mirai-hibernate-plugin/releases/download/v2.4.3/mirai-hibernate-plugin-2.4.3.mirai2.jar) * [Mirai Hibernate Plugin](https://github.com/cssxsh/mirai-hibernate-plugin/) 感谢大佬提供的轮子 @cssxsh 将下载好的jar文件添加到mcl的plugin文件夹,运行mcl即可,启动成功后在console控制台输入 `/hy owner ` 添加主人即可 %(#ff0000)[如果聊天命令没有起作用请重启mcl!] 如果你对mcl有一定的了解,那么你可以尝试用以下的方法来安装壶言2 你需要先删除plugin中的壶言2和前置的 jar, 再执行以下命令: ```shell # 前置 mcl --update-package xyz.cssxsh.mirai:mirai-hibernate-plugin --channel stable --type plugin # 只安装正式版 mcl --update-package cn.chahuyun:HuYanSession --channel maven-stable --type plugin # 升级 mcl update # 一个重启小插件(壶言重启) !重启 ``` --- ## **自定义回复** `权限id:session` ### 参数 所有自定义回复都会携带作用域和匹配方式参数! 支持更简洁的输入且都是可选!默认为`精准`和`全局`! `[]`和`()`指数学中的域,在本插件表示`可填写`和`必填写`; `|`为或,表示两边都可以用; %(#ff0000)[**以下所有指令均适用于此表示方法!**] * `[精准|1]` 精准匹配 * `[模糊|2]` 模糊匹配 * `[头部|3]` 头部匹配 * `[结尾|4]` 结尾匹配 * `[正则|4]` 包含正则匹配 * `[全局|0]` 全局匹配 * `[当前|-1]` 当前群匹配 * `[群组(id)|gr(id)]` 指定群组匹配 具体参数含义可以去壶言1查看 --- ### 一对一回复(会话) `权限id:sessionx` 直接上指令 | 指令 | 含义 | 案例|中文格式| | ---- | ---- |----|----| | `xx (触发内容) (回复内容) [参数]`| 快速添加关键字回复 参数可多填,以空格隔开 | `xx 怎么办 凉拌 2 0`|`学习 怎么办 凉拌 模糊 全局`| | `xx:[触发内容]` | 查询所有已保存的关键词回复,冒号中英都支持,后续的触发内容填上就是查询对应的那条|`xx:` |`查询 怎么办`| |`-xx:(触发内容)`|删除对应的关键词|`-xx:怎么办`|`删除 怎么办`| |`%xx`|通过多次消息发送的形式添加对话,便于手机使用|`%xx`|`学习对话`| |`-%xx`|由于多次消息形式添加的对话的触发词可能含有空格,因此要用对应的方式删除|`-%xx`|`删除对话`| > ^fold > > 下面的参数 > 2:模糊匹配 gr1 群组编号1 内触发 > ![52f718ff-4a89-4c6b-85c1-33d91f1252b5-图片.png](/assets/uploads/files/1660795704800-52f718ff-4a89-4c6b-85c1-33d91f1252b5-图片.png) > 学习对话参数: * `0 | 全局` 修改触发作用域为这个机器人的所有群 * `1 | 精准` 只有发的消息跟触发词相同,才能触发回复,`不填写参数默认` * `2 | 模糊` 发送消息包含触发词即可触发。 * `3 | 头部` 发送消息的开头为触发词即可触发 * `4 | 结尾` 发送消息的结尾为触发词即可触发 * `5 | 正则` 以正则匹配触发消息,仅限`%xx`学习功能 * `-1 | 当前` 修改触发作用域为当期这个群,`不填写参数默认` * `gr(id) | 群组(id)` 修改作用域为对应的群组id,()不是指令,只是说明这个`id`必须填写,群组的使用方式在下方 所有参数都在聊天指令的结尾以`(空格)(参数)`添加,无序。 对话和多词条支持的动态消息: 欢迎词支持的动态消息: |动态消息类型|动态消息参数|含义|案例|匹配结果| |----|----|----|----|----| |`at`|`this`|@(at)触发这条消息的人|`$at(this)`|@放空| | |`qq`|@群里的这个人,会固定@这个人|`$at(572490972)`|@放空| |`message`|`this`|这个人触发这条消息的内容|`$message(this)`|不会写插件怎么办?| |`user`|`name`|获取这个人的名称|`$user(name)`|放空| | |`id`|获取这个人的qq|`$user(id)`|572490972| | |`avatar`|获取这个人的头像|`$user(avatar)`|[图片]| | |`title`|获取这个人的头衔,优先获取特殊头衔|`$user(title)`|才不是放空了~| | |`info`|详细信息??|`$user(info)`| | |`time`|`now`|获取当前时间,默认格式`yyyy-MM-dd HH:mm:ss`|`$time(now)`|2022-8-28 02:15:15 | | |`(时间格式)`|按照指定的时间格式进行现在的时间输出|`$time(HH:mm:ss)`|02:16:20| --- ### 一对多回复(多词条) `权限id:sessiondct` 指令: | 指令 | 含义 | 案例|中文格式| | ---- | ---- |----|----| |`%dct`|添加多词条|`%dct`|`添加多词条`| |`dct:`|查询所有多词条|`%dct`|`查询多词条`| |`-dct:(id) [id]`|删除多词条,id通过查询得到,第一个id是对应的多次条id,第二个id是对应回复语句id,如果填写,就是删除这个多次回复语句下的这条回复,支持空格隔开一次删除多条|`-dct:5`|`删除:2 34 44 23`| 在添加多词条消息的途中, 发送 * `!!! | !!!` 结束添加,不进行保存,直接结束这次操作 * `!! | !!` 在循环添加回复内容时,停止添加,退出进行多词条消息的保存 * `! | !` 删除上一条添加的内容 添加多词条参数: * `1 | 精准` 只有发的消息跟触发词相同,才能触发回复,`不填写参数默认` * `2 | 模糊` 发送消息包含触发词即可触发。 * `3 | 头部` 发送消息的开头为触发词即可触发 * `4 | 结尾` 发送消息的结尾为触发词即可触发 * `lx | 轮询` 多个词条回复的顺序为轮询,就是一条一条发送去,`不填写参数默认` * `sj | 随机` 修改回复顺序为随机,就是触发后随机从多词条中取一条拿来回复 * `0 | 全局` 修改触发作用域为这个机器人的所有群 * `gr(id) | 群组(id)` 修改作用域为对应的群组id,()不是指令,只是说明这个`id`必须填写 单个多词条回复语句也支持动态消息,具体支持看上面的对话动态消息支持 --- ## 群组 `权限id:list` 用于设定特定几个群的群组系统,用于一些东西只在这几个群中触发,其他插件有个相反的功能叫群黑名单,我这个是正向的,只在那些群触发。 指令: | 指令 | 含义 | 案例|中文格式| | ---- | ---- |----|----| |`+gr:(id) (群号)`|添加多个群为一个群组,群号支持多个|`+gr:1 780594692 `|`添加群组:1 780594692 390444068`| |`gr:[id]`|查询所有群组信息,id填写后只查询对应的id所属群组信息|`gr:`|`查询群组:1`| |`-gr:(id) [群号]`|删除这个群组里面的某个群号,支持多个群号|`-gr:1`|`删除群组:1 390444068 780594692`| > ^fold > > ![13e391e9-4c58-4a3c-a0c7-e2413cae2fb2-图片.png](/assets/uploads/files/1660795545100-13e391e9-4c58-4a3c-a0c7-e2413cae2fb2-图片.png) >![d96e3d66-ac42-405f-bcbe-a4a0d1080245-图片.png](/assets/uploads/files/1660795600588-d96e3d66-ac42-405f-bcbe-a4a0d1080245-图片.png) > --- ## 定时器 `权限id:ds` 定时任务是指,按照指定的时间频率发送对应的消息,时间频率是cron表达式,不懂的人可以花5分钟了解一下,基本能满足任何时间频率 cron输入格式`$cron(* * * * * ?)` ### 定时管理 指令: | 指令| 含义| 案例|中文格式| | ---- | ---- |----|----| |`%ds`|添加定时任务,具体根据提示进行添加|`%ds`|`添加定时器 | 添加定时任务`| |`-ds(id)`|删除定时任务,id查询获得|`-ds:1`|`删除定时器:1 | 删除定时任务:1`| 在添加回复消息的途中, 发送 * `!!! | !!!` 结束添加,不进行保存,直接结束这次操作 * `!! | !!` 在循环添加回复内容时,停止添加,退出进行定时任务的保存 * `! | !` 删除上一条添加的内容 定时任务的参数: * `hf | 回复` 定时器触发后只回复一条消息,`不填参数默认` * `lx | 轮询` 定时器的回复内容将成为多词条的样式,并且回复词条顺序为轮询,与随机冲突! * `sj | 随机` 定时器的回复内容将成为多词条的样式,并且回复词条顺序为随机,与轮询冲突! * `-1 | 当前` 作用域-当前这个群 `默认` * `0 | 全局` 作用域-全部群 * `gr(id) | 群组(id)` 作用域-指定群组 ### 定时器操作 `权限id:dscz` |指令|含义| 案例|中文格式| | ---- | ---- |----|----| |`ds:`|查询定时任务|`ds:`|`查询定时器 | 查询定时任务`| |`%ds:(id)`|切换定时任务的状态,如果已经开启,则切换为关闭,id查询获取|`%ds:1`| `切换定时器:1 | 切换定时任务:1`| --- ## 群管理 `权限id:group` **此权限不是指令权限** 对于几个检测群的功能,需要先将对于群添加为检测群 /hy agroup (群号) #添加 /hy dgroup (群号) #删除 依然支持在config文件手动添加 --- ### 特殊头衔 当你的机器人是群主时才可以使用,拥有`admin`、`group`权限的用户也可以用于使用。 指令: |指令|含义| 案例|中文格式| | ---- | ---- |----|----| |`%@(user) (内容)`|给这个人修改特殊头衔|`%@放空 才不是放空了~`|`设置头衔@放空 才不是放空了~`| 是群主才行哦~ --- ### 群欢迎词 `权限id:grouphyc` 当有人申请的时候,拥有管理员权限的机器人并且加入了检测的群 机器人会给出提示 在配置文件中有是否启用开关 指令: |指令|含义| 案例|中文格式| | ---- | ---- |----|----| |`开门 id|all`|同意这个人的进群申请|`开门 1`|` 开门 all`| |`同意 id|all`|同意这个人的进群申请|`同意 1`|` 同意 all`| |`关门 id|all`|关门这个人的进群申请|`关门 1`|` 关门 all`| |`拒绝 id|all`|拒绝这个人的进群申请|`拒绝 1`|` 拒绝 all`| id是进群时所提示的门牌号 欢迎词功能不需要检测群支持! 欢迎词指令: |指令|含义| 案例|中文格式| | ---- | ---- |----|----| |`%hyc`|添加欢迎词|`%hyc`|`添加欢迎词`| |`hyc:`|查询欢迎词词|`hyc:`|`查询欢迎词`| |`-hyc:(id) [id]`|删除欢迎,id查询获得,第二个id是对应的欢迎词集合中的某条欢迎词,不支持多条删除|`-hyc:2`|`删除欢迎词:1 15`| 参数: * `lx | 轮询` 欢迎词将以轮询的方式逐条发送,`默认` * `sj | 随机` 欢迎词将随机发送 * `0 | 全局` 作用域:全局 * `gr(id) | 群组(id)` 作用域:群组 欢迎词支持的动态消息: |动态消息类型|动态消息参数|含义|案例|匹配结果| |----|----|----|----|----| |`at`|`this`|@(at)这个进群的人|`$at(this)`|@放空| | |`that`|这个要请他的人,如果没有邀请的人则会at同意他进来的那个人|`$at(that)`|@放空| | |`qq`|@群里的这个人,会固定@这个人|`$at(572490972)`|@放空| |`message`|`apply`|获取这个人进群申请的消息|`$message(apply)`|这个人什么都没说...| |`user`|`name`|获取这个人进群时的名称|`$user(name)`|放空| | |`id`|获取这个人的qq|`$user(id)`|572490972| | |`avatar`|获取这个人的头像|`$user(avatar)`|[图片]| |`time`| 所有支持动态消息的都支持时间,具体用法在文档前面的对话 |||| --- ### 禁言 `权限id:groupjy` 此指令只有在你的机器人是管理员或群主才能触发 指令: |指令|含义| 案例|中文格式| | ---- | ---- |----|----| |`@某人(禁言时间)`|在机器人有权限的情况下,对你@的这个人进行指定时间的禁言|`@放空 3m`|``| |`@某人 0s`|解除禁言|`@放空`|``| 时间频率: * `s` 秒 * `m` 分钟 * `h` 小时 * `d` 天 --- ### 违禁词 不需要检测群支持。 此指令只有在你的机器人是管理员或群主才能起作用。 指令: |指令|含义| 案例|中文格式| | ---- | ---- |----|----| |`+wjc:(内容) [param]`|添加违禁词,内容是触发内容,param是参数,具体可以查看下方|`+wjc:色图 ch 2m`|`添加违禁词:色图 % jy`| |`-wjc:(id)`|删除违禁词,id查询获得|`-wjc:2`|`删除违禁词:2`| |`wjc:`|查询所有违禁词|`wjc:`|`查询违禁词`| #### 参数的意义 * `ch` 违禁词默认撤回,当输入ch后,wjc将不撤回消息 * `jy` 违禁词默认禁言,当输入jy后,wjc将不禁言 * `3s` 修改禁言时间,具体时间格式查看禁言 * `%` 重写回复语句,支持动态消息,具体支持动态消息查看下方 * `[gr1 | 0 ]` 群组或全局,默认当前群 * `1,2,3,4` 匹配方式,跟关键词回复的匹配同理 * `hmd3` 开启触发3次后就会踢出群聊,数字可自选 hmd参数输入后,将会开启小黑屋功能,不会提示!当某个人触发这个wjc到达次数,直接踢出本群,可以和下面的自动添加黑名单配合! 违禁词回复消息支持动态消息: |动态消息类型|动态消息参数|含义|案例|匹配结果| |----|----|----|----|----| |`at`|`this`|@(at)触发这条消息的人|`$at(this)`|@放空| | |`qq`|@群里的这个人,会固定@这个人|`$at(572490972)`|@放空| |`message`|`this`|这个人触发这条消息的内容|`$message(this)`|不会写插件怎么办?| | |`jyString`|这条违禁词的禁言时间中文|`$message(jyString)`|禁言2分钟| | |`prohibitString`|同上| | | | |`null`|不发送消息|`$message(null)`| | |`user`|`name`|获取这个人的名称|`$user(name)`|放空| | |`id`|获取这个人的qq|`$user(id)`|572490972| | |`avatar`|获取这个人的头像|`$user(avatar)`|[图片]| | |`title`|获取这个人的头衔,优先获取特殊头衔|`$user(title)`|才不是放空了~| | |`info`|详细信息??|`$user(info)`| | |`time`|`now`|获取当前时间,默认格式`yyyy-MM-dd HH:mm:ss`|`$time(now)`|2022-8-28 02:15:15 | | |`(时间格式)`|按照指定的时间格式进行现在的时间输出|`$time(HH:mm:ss)`|02:16:20| --- ### 黑名单 `权限id:grouphmd` 不需要检测群支持。 此指令只有在你的机器人是管理员或群主才能触发。 支持作用域!!设置为全局时,该用户将被你的bot封禁! |指令|含义| 案例|中文格式| | ---- | ---- |----|----| |`+hmd:@(user) [param] `|添加黑名单,参数看下方|`+hmd:@放空 jy`|`添加黑名单:@放空 %`| |`hmd:`|查询黑名单|`hmd:`|`查询黑名单`| |`-hmd:(id)`|删除黑名单,id查询获得|`-hmd:3`|`删除黑名单:2`| 参数: * `t` 默认检测到就踢出,携带参数不踢出 * `jy` 默认禁言(优先踢出),携带参数不禁言 * `ch` 默认撤回该用户的消息,携带不提出 * `0 | gr(id)` 作用域不携带参数`默认当前群` * `%` 重写封禁理由 此功能需要检测群支持! 在配置文件blacklist有退群自动添加黑名单开关! 里面还有重写封禁理由! --- ### 撤回消息 `权限id:groupch` 用于撤回上面的群消息,机器人是管理员和群主才能使用 指令: |指令|含义| 案例|中文格式| | ---- | ---- |----|----| |`!recall`|撤回上面这条消息|`!recall`|`撤回`| |`!recall (number)`|撤回前面几条消息,不包含这条消息|`!recall 5`|`撤回 5`| |`!recall 1-5`|撤回上面1到5条,从第0条算起,包含这条消息|`!recall 1-5`|`撤回 25-55`| 具体用法试一试就明白,撤回多条消息时,权限可能会有冲突。 --- ### 踢人 `权限id:grouptr` 此指令只有在你的机器人是管理员或群主才能触发 |指令|含义| 案例|中文格式| | ---- | ---- |----|----| |`tr@(user) [hmd]`|踢人|`tr@放空`|`踢人@放空`| 参数: * `hmd` qq的踢人有个禁止此用户再次加群,输入后将禁止此用户再次加群 --- ## 权限系统 `权限id:admin` 指令: |指令|含义| 案例|中文格式| | ---- | ---- |----|----| |`+@(user) (权限id)`|赋予这个群的这个人的某个权限,权限id可在文档查看|`+@放空 admin`|`添加@放空 all`| |`-@(user)`|移除这个权限|`-@放空 all`|`删除@放空 group`| |`!power [param]`|查询权限列表,参数如下|`!power all`|`权限列表 all`| 参数: * ` ` 不填默认当前群 * `@某人` 查看指定人在本群的权限 * `all` 查询所有权限或添加所有权限或删除所有权限 查询可以输入对应的群号 或者 qq号 来查询指定区域的权限信息 也可以直接 all 查询全部 然后通过 `上一页` 和 `下一页` 来进行翻译阅读 --- ## 多机器人互冲 对于同时加载多个bot的使用者 容易存在一条指令两个bot触发,因此,加了一个‘暂停功能’ 指令: |指令|含义| 案例|中文格式| | ---- | ---- |----|----| |`!pause @(bot)`|你发的下一条消息,这个机器人将会忽略(包括触发)|`!pause@乌拉`| | |`!pause @(bot) 5`|忽略下5条消息,消息数量自定|`!pause @乌拉 5`| | 不带参数,默认忽略你的下一条消息 也可以自定义忽略下几条消息,这个记录是写在内存的,如果不小心输入多了(9999999999),重启就行。 --- ## 插件指令 |指令|含义| 案例| | ---- | ---- |----| |`/hy aGroup`|添加一个监测群|`/hy aGroup 390444068` | |`/hy dGroup`|删除一个监测群|`/hy dGroup 390444068`| |`/hy v`|查询当前插件版本|`/hy v`| |`/hy transfer `|转移一个所属bot的数据到另一个bot|`/hy transfer 2061954151 3630254205`| --- ## 规划和已知BUG 任何意见都可以提! 规划: * ~~实现机器人的数据转移~~->2.2.3 * ~~实现消息的正则匹配~~->2.2.1 * 实现消息的excel导入和导出(在1添加导出功能) bug: --- ## 交流 壶言系列插件交流群 [不是云的茶壶云(390444068)](https://jq.qq.com/?_wv=1027&k=yFqKaMUW ) 有任何疑问或者建议都可以来群里提! 最新的插件动态也会在群里说明!