18870 / nonebot-plugin-reboot

命令重启 nonebot2
MIT License
17 stars 0 forks source link

Nonebot-plugin-reboot

用命令重启 bot

:warning:注意事项

必须要有 bot.py
新版 nb-cli 默认不生成 bot.py,需要在 nb 菜单里选择 生成机器人的入口文件 / Generate entry file of your bot. 生成一个,不需要修改。 不要再去群里问bot.py在哪了

不兼容 fastapi_reload,见 #1#2
不推荐使用 nb-cli 的 --reload 参数,这个插件是 --reload 在生产环境中的替代品。

重启时直接对子进程使用 process.terminate(),如果你的其他插件启动了子进程,请确保它们能在设定的等待时间内正确关闭子进程,否则子进程会变成孤立进程。
:warning: Windows 下因系统 API 的限制进程会直接被杀死, 没有 等待时间。


插件依赖于 multiprocessing spawn 生成子进程方式工作,支持由 nb-cli 生成的 bot.py,以及其他在加载插件后调用 nonebot.run() 的启动方式。

安装

通过 nb-cli 安装:
nb plugin install nonebot-plugin-reboot

新版 nb-cli 默认不生成 bot.py,需要在 nb 菜单里选择 生成机器人的入口文件 / Generate entry file of your bot. 生成一个,不需要修改。

使用

超级用户向机器人私聊发送命令 重启, rebootrestart

:warning: 注意命令的 COMMAND_START.
例如 /重启 、 /reboot 、 /restart

配置项

reboot_load_command: bool

reboot_grace_time_limit: int

bot.py

因为使用了 spawn 方式启动子进程,默认情况下会加载两次插件,如果你觉得这不是问题可以忽略,也不建议你在不懂的情况下修改 bot.py

推荐的写法是将 插件加载部分 和 启动部分 分开,以避免插件在主进程和子进程都加载一遍,见 #6

真寻启动居然要20秒

API

require("nonebot_plugin_reboot")
from nonebot_plugin_reboot import Reloader
Reloader.reload(delay=5) # 可选参数 5秒后触发重启

依赖

启用 reboot_load_command 时需要以下依赖