# auto-plugin
**Repository Path**: Nwflower/auto-plugin
## Basic Information
- **Project Name**: auto-plugin
- **Description**: Yunzai-Bot V3 的一个小型插件包,主要提供各式各样的定时任务功能和自动监听功能。
- **Primary Language**: NodeJS
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 108
- **Forks**: 3
- **Created**: 2022-12-06
- **Last Updated**: 2025-04-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 自动化插件Auto-plugin For Yunzai
Yunzai-Bot V3 的一个小型插件包,主要提供各式各样的定时任务功能和自动监听功能
# 前排提示
感谢您访问该插件!值得一提的是,该插件已停止功能的更新,非必要请勿发起issue,目前仅做部分功能的维护,感谢您的理解!
(小声bb:时雨怎么跟没接手一样)
### 前置安装提醒
本插件有较多定时任务功能,且多数不会向控制台输出执行日志,建议拥有以下技能:
* **知道看完本文再提问**
* 学会正常使用搜索引擎
* 知道如何利用工具修改文件
* 拥有义务教育阶段要求的知识水平
* 对于Yunzai有一定的了解,有基础的代码辨识能力
如果没有以上技能,请立刻停止插件安装并关闭浏览器。
如果你有以上技能,浏览以下内容后,不应再出现疑问。
否则, 请咨询当地医院是否患有潜在脑疾。
如果你对具体的查询流程不太了解,可以[点击这里](https://www.guahao.com/nav)快速预约正规医院挂号。
### 安装方法
本插件为[云崽Yunzai-bot](https://gitee.com/Le-niao/Yunzai-Bot)的辅助插件
想要获取该插件,请在Yunzai根目录下运行以下代码
使用github方式获取
```
git clone --depth=1 https://github.com/Nwflower/auto-plugin.git ./plugins/auto-plugin/
```
如果您所在的地区网络不是很好,建议使用gitee源
```
git clone --depth=1 https://gitee.com/Nwflower/auto-plugin.git ./plugins/auto-plugin/
```
### 功能列表及使用说明
以下操作建议使用锅巴插件进行配置或者找到配置文件夹auto-plugin/config/下的对应yaml文件修改。
#### 自动指令(autoCommand)
在你指定的时间处理指令。
前缀为【#定时指令】,之后需要额外带一些参数。
【-s】参数为延迟时间,表示多少秒之后执行这个命令,适用于只需要执行一次的指令;
【-c】参数为cron表达式,表示执行命令时的cron,可以用于重复性指令。
【-t】参数为你想要执行的指令。
(示例1)例如,你想在五分钟后更新喵喵面板,请使用以下指令:
\#定时指令 -s=300 -t="#更新面板"
(示例2)例如,你想在每天8点进行一次模拟抽卡,请使用以下指令:
\#定时指令 -c="0 0 8 * * ? " -t="十连"
**注意事项**
1. t参数必须要有
2. s和c参数必须要有其中一个,同时存在时可能随机触发
3. 前缀和各参数字符串之间必须存在一个空格,如示例中的那样
4. 云崽重启后无法正常生效
#### 自动更新个性签名及发说说(autoSign)
该功能默认关闭。启用后,将在设定的时间点自动发布签名和说说。
如果只需要发布签名,但不需要发布说说,请使用手机登录机器人QQ发一条个性签名,并手动勾选上:不同步到说说。后续将不会同步到空间。
签名频率可以在插件目录下config文件夹autosign.yaml修改,请自行修改cron表达式。其他配置类似,后文不再赘述。你也可以使用锅巴插件进行修改。
#### 自动更新全部插件(autoUpdate)
该功能默认开启。开启后,在凌晨2-4点之间某一刻自动更新全部插件并重启。保存日志到当日8点再发送。也可以在配置中设置其他发送时间或者其他更新时刻。也可以发送`#自动更新日志`查看当日更新日志。
#### 群名片小尾巴(autoGroupName)
该功能默认开启。由旧版本内存更新群名片升级而来,支持多种小尾巴展示和多样化自定义。具体见后文:模块列表
#### 自动制裁群友召唤术(autoDelAt)
该功能默认开启。监测到非管理员如果一次at人数大于10,且超过群人数的80%就直接踢出群聊。有效制裁“群友召唤术”。
#### 自动撤回(autoRecallMsg)
该功能默认关闭。配置后,将对机器人发送的所有消息进行定时撤回
#### 自动更新米游社攻略(autoStrategy)
该功能默认开启。每周六凌晨4-6点之间某一刻更新默认米游社攻略图,也可以手动更新。命令:更新全部攻略、更新全部攻略2。
注意:自动更新攻略不是直接获取最新攻略,其作用和'更新XX攻略'作用一样,只不过是批量处理全部角色而已。因此不能保证获取的一定就是最新攻略。
#### 日志向群输出(autoSendLog)
该功能默认关闭。启用该功能后,请将你和机器人拉一个单独的群聊,然后将这个群号填进配置“日志输出群号”,(生效需要重启),则机器人会将控制台的日志自动发送到该群。
日志会攒下来,偶尔性发送,方便你查阅。你也可以设置遇到报错日志立刻发送一次。
#### 指令表、任务表(autoCommandHelp)
该功能仅主人可用。
该功能不是定时任务。
口令:【#指令表】 自动扫描所有插件并生成关于这些插件的指令表。
口令:【#任务表】 自动扫描所有定时任务并提供定时任务管理。同时可以处理自动化插件提供的【自动指令】功能(如果配置了cron的情况下)。
### 群名片小尾巴模块列表
| 文件名 | 功能名称 | 示例后缀 |
| ----------------: | :----------: | ----------------------------- |
| GenshinVersionDay | **原神倒计时** | 离原神3.4还有25天1小时17分钟 |
| StarRailVersionDay | 星穹铁道倒计时 | 离崩铁开服还有15天13小时2分钟 |
| hitokoto | 一言 | 持道而修,不可议其。 |
| MemoryPercent | 内存占用 | 当前系统活力81.08% |
| MonthMassage | 月消息数 | 本月已发送30000条消息 |
| SystemTime | 北京时间 | 现在是北京时间09:41 |
| OldTime | 长安十二时辰 | 现在是长安午正三刻 |
| HotSearch | 微博热搜第一 | 热搜第一:阿根廷 |
| B站热搜 | B站热搜第一 | 委员建议禁放烟花改为限时燃放 |
| 知乎热搜 | 知乎热搜第一 | 2023经济会不会爆发式反弹? |
| 百度热搜 | 百度热搜第一 | 上海某小区XXXX?官方辟谣! |
| 抖音热搜 | 抖音热搜第一 | 白肺的一个明显表现是气紧 |
| userSuffix | 用户自定义尾巴 | 真名,肚饿真君 |
模块路径:auto-plugin\model\autoGroupName文件夹,可以根据13个示例自行开发新模块。
样式切换口令:
- [ ] #切换名片样式
- [ ] #切换名片样式1,3,5
- [ ] #切换名片前缀\
- [ ] #切换名片自定义后缀\
#### 定时任务管理(taskManage)
可以预设定时任务,用于执行其他插件的指令,在[plugins/auto-plugin/def/taskManage.yaml]文件中预设了一些定时任务,方便添加到任务表中。
- taskManage.yaml例:
```yaml
list:
- task:
enable: true
name: "原神日历"
desc: "每周日中午10点调用Miao-Plugin-【#日历】"
cron: "0 0 10 * * SUN"
command: "#日历"
- task:
enable: true
name: "星铁日历"
desc: "每周日中午10点零5秒调用Miao-Plugin-【*日历】"
cron: "5 0 10 * * SUN"
command: "*日历"
```
备注:每个任务的cron表达式应该存在一定的执行间隔,yunzai中默认令操作冷却时间为0.5秒,个人操作冷却时间为2秒,如果所有任务同时触发,可能导致后面的任务被限制,建议任务之间间隔2秒以上。
**修改[plugins/auto-plugin/def/taskManage.yaml]后发现配置修改无效:**
首次执行任务管理后,将在[plugins/auto-plugin/config]产生一个同名文件[plugins/auto-plugin/config/taskManage.yaml],下一次读取配置时将从此文件读取,所以若要修改任务参数,请在[plugins/auto-plugin/config/taskManage.yaml]中修改。暂不支持锅巴插件中修改
指令说明:
| 描述
| 说明 | 备注 |
|:---------------------------------:|------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|
| #批量启动任务 | 主人在群里输入【#批量启动任务】,将依据taskManage.yaml在本群内创建任务并加入任务表。 | 和【#定时指令】一样,任务在关闭您的云崽、计算机或服务器后调用将立刻失效。创建出来的任务只在本群生效,任务表中以[群号-任务名]作为任务的实际名称。 |
| #单独启动任务 | 假设taskManage.yaml文件中预设了名为[原神日历]和[星铁日历]的任务,若只想启动原神日历,则主人在群里输入【#单独启动任务原神日历】 | 同上 |
| #删除任务 | 拓展了autoCommandHelp.js中的【#取消任务】,现可以删除任务表中的任务(**请谨慎操作,此功能可以删除其他插件的任务**)。用法和【#取消任务】相同,需要先通过【#任务表】命令查询要删除的任务的[任务代号],假如要删除任务代号8,则输入【#删除任务8】。 | **删除一个任务后,任务表中的任务代号会重新排列,假如你要删除其他任务,每次删除前都应该查询【#任务表】,确认任务代号后再删除,防止误删。删除后的任务无法还原,可以重新通过【#定时指令】或【#单独启动任务(如果是预设过的)】添加** |
| #立即/立刻/马上执行任务 | 某些任务执行间隔较长,如果想要立即执行某任务,通过【#任务表】获取到任务的代号,如任务代号3,则主人输入【#立即执行任务3】 | |
#### 自动执行其他插件的指令(autoWebSocketTask)
经测试发现,如果需要自动跨插件执行其他插件的指令,可以通过模拟一条主人消息,让机器人做出对应的回复。
目前模拟主人消息的方式之一是和yunzai之间建立一条新的WebSocket连接,通过本连接发送一条模拟消息给yunzai,其中发送人为yunzai的第一主人,群号可以通过taskManage.yaml指定。
此方式基于定时任务管理配置,但与【#批量启动任务】的“被动”添加任务不同,将在yunzai启动时自动将任务添加到任务表,不需要主人再做其他操作即可定时执行其他插件指令。
- taskManage.yaml配置方式
```yaml
# 是否启用WebSocket任务 默认false
openWS: true
# openWS开启后,填写应用的WebSocket连接地址(必填)
# 此处例子为trss-yunzai的OneBotv11适配器配置形式,具体需要根据自身yunzai配置ws
ws: 'ws://localhost:2536/OneBotv11'
list:
- task:
enable: true
name: "原神日历"
desc: "每周日中午10点调用Miao-Plugin-【#日历】"
cron: "0 0 10 * * SUN"
command: "#日历"
# openWS开启后,群号必填
group: 123
- task:
enable: true
name: "星铁日历"
desc: "每周日中午10点零5秒调用Miao-Plugin-【*日历】"
cron: "5 0 10 * * SUN"
command: "*日历"
# openWS开启后,群号必填
group: 456
```
上述配置中,当yunzai启动时,会自动创建【123(群)-原神日历】和【456(群)-星铁日历】任务加入到任务表,并在每周日中午10点新建一条WebSocket连接,模拟主人发送【#日历】指令到机器人。
备注:每个任务的cron表达式应该存在一定的执行间隔,yunzai中默认令操作冷却时间为0.5秒,个人操作冷却时间为2秒,如果所有任务同时触发,可能导致后面的任务被限制,建议任务之间间隔2秒以上。极端情况下,可能主人刚好在群里发送了某指令,并与此处的任务同时触发,也可能导致指令受CD限制而没有执行。
### 常见问题Q&A
Q:我是Linux服务器,有没有更方便修改配置yaml文件的方式?
A:有,请使用锅巴插件。
Q:为什么我的机器人不更新群名片?
**A:你可能没有开启更新开关。虽然该功能默认开启,但在较早的版本中,该功能默认关闭。如果你的开关是关闭的或者你压根不知道你的开关有没有开启,请运行一遍插件后,请找到配置文件Yunzai-Bot\plugins\auto-plugin\config\autoGroupName.yaml,然后将第一项配置设置为true。如果已经是true了请耐心等待一段时间后看看有没有生效。**
**(23.4.11更新)该功能目前疑似灰度加入了tx风控检测,如果你的群名片无法更改,也可以用自己的手机或电脑登录机器人QQ试试手动更改。如果发现手动更改不能更改成功,则说明账号被风控,请关闭该功能等待若干时间恢复正常后再开启。切记频率不要设置太高,如果你的群有很多,建议进入配置文件设置一次只改一个群。**
Q:为什么我的机器人群名片配置样式不生效?
A:你可能安装了其他的同类功能,开发者Nwflower于2022.8发布了该插件的弱版本,包括较早版本的抽卡插件、js版的系统占用修改名片。其他插件如榴莲插件等也存在该功能,请确保你没有安装含有此功能的其他插件且没有开启对应开关。
Q:为什么自动更新总安排在时间段的某一刻?我想改成其他的定时定点行不行?
A:之所以设置随机更新是考虑到如果定点更新,所有装了自动化插件的默认配置用户将会在同一时刻向服务器发送请求,可能导致一些难以预料的后果,故设置为随机时间段更新。如需更改,请进入配置文件修改。
Q:配置完自动更新后如何查看更新日志?
A:发送`#自动更新日志`或者等待机器人按你配置的时间发送。
Q:还有其他疑问怎么办?
A:你可以[提出issue](https://github.com/Nwflower/auto-plugin/issues)或者对于新功能[发起PR](https://github.com/Nwflower/auto-plugin/pulls)。当然,你也可以使用QQ群组功能反馈。**点击加入[AUTO插件交流群](https://qm.qq.com/cgi-bin/qm/qr?k=XOTZhBWpv68F1sfsMIzKJpg28NBPKJgg&jump_from=webapi&authKey=/XagQoLiUhOi+t67MCkWOSRLlXe+ywVmrkCHdoD3CjwqNzAUYspTrqYklkwb3W0R)**。如果你想要获得开发者的手把手指导,请使用[爱发电](https://afdian.net/a/Nwflower)。
### 其他
##### Nwflower插件全家桶
| 插件名 | 插件地址 |
| --------------------- | --------------------------------------------------------- |
| 抽卡插件Flower-plugin | [Flower-plugin](https://gitee.com/Nwflower/flower-plugin) |
| Atlas图鉴 | [Atlas](https://gitee.com/Nwflower/atlas) |
| 自动化插件auto-plugin | [Auto-plugin](https://gitee.com/Nwflower/auto-plugin) |
##### 友情提示
* Yunzai-Bot插件库:[☞Github](https://github.com/yhArcadia/Yunzai-Bot-plugins-index)/[☞Gitee](https://gitee.com/yhArcadia/Yunzai-Bot-plugins-index)
* Yunzai-Bot(V3):[☞Github](https://github.com/Le-niao/Yunzai-Bot)/[☞Gitee](https://gitee.com/Le-niao/Yunzai-Bot)
* 如果你觉得本插件还行,不妨给个star或者[爱发电](https://afdian.net/a/Nwflower),你的支持不会获得额外内容,但会提高本项目的更新积极性。
* 未成年人禁止打赏。
* 严禁用于任何商业的、非法的、违纪的、不当的、牟利性的行为
* 若你已经使用了该插件,则默认认同本说明中提及的格式条款,本说明随时更新且没有义务通知使用者。