新增安全模式启动

This commit is contained in:
snowy 2024-04-20 12:46:49 +08:00
parent 7585a5473d
commit 18d9ac3249
4 changed files with 26 additions and 18 deletions

View File

@ -21,6 +21,7 @@ superusers: [ "1919810" ] # 超级用户列表
``` ```
## **其他配置** ## **其他配置**
以下为默认值,如需自定义请手动添加 以下为默认值,如需自定义请手动添加
```yaml ```yaml
@ -30,16 +31,9 @@ log_level: "INFO" # 日志等级
log_icon: true # 是否显示日志等级图标(某些控制台字体不可用) log_icon: true # 是否显示日志等级图标(某些控制台字体不可用)
auto_report: true # 是否自动上报问题给轻雪服务器 auto_report: true # 是否自动上报问题给轻雪服务器
auto_update: true # 是否自动更新轻雪每天4点检查更新 auto_update: true # 是否自动更新轻雪每天4点检查更新
fake_device_info: # 用于保护设备隐私
cpu:
brand: AMD
cores: 16 # 物理核心数
logical_cores: 32 # 逻辑核心数
frequency: 3600 # CPU主频MHz
mem:
total: 32768000000 # 内存总数:字节
alconna_use_command_start: false # alconna是否使用默认指令前缀默认false alconna_use_command_start: false # alconna是否使用默认指令前缀默认false
alconna_auto_completion: false # alconna是否自动补全指令默认false建议开启 alconna_auto_completion: false # alconna是否自动补全指令默认false建议开启
safe_mode: false # 安全模式,开启后将不会加载任何第三方插件
# 其他Nonebot插件的配置项 # 其他Nonebot插件的配置项
custom_config_1: "custom_value1" custom_config_1: "custom_value1"

View File

@ -28,8 +28,11 @@ tag:
你需要使用Onebot标准的实现端来连接到轻雪并将消息上报给轻雪下面已经列出一些推荐的实现端 你需要使用Onebot标准的实现端来连接到轻雪并将消息上报给轻雪下面已经列出一些推荐的实现端
- `Playwright`安装失败 - `Playwright`安装失败
- 输入`playwright install`安装浏览器 - 输入`playwright install`安装浏览器
- 有的插件安装后报错无法启动
- 请先查阅插件文档,确认插件必要配置项完好后,仍然出现问题,请联系插件作者或在安全模式`safe_mode: true`下启动轻雪,在安全模式下你可以使用`npm uninstall`卸载问题插件
- 其他问题 - 其他问题
- 加入QQ群[775840726](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=SzmDYbfR6jY94o9KFNon7AwelRyI6M_u&authKey=ygeBdEmdFNyCWuNR4w0M1M8%2B5oDg7k%2FDfN0tzBkYcnbB%2FGHNnlVEnCIGbdftsnn7&noverify=0&group_code=775840726) -
加入QQ群[775840726](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=SzmDYbfR6jY94o9KFNon7AwelRyI6M_u&authKey=ygeBdEmdFNyCWuNR4w0M1M8%2B5oDg7k%2FDfN0tzBkYcnbB%2FGHNnlVEnCIGbdftsnn7&noverify=0&group_code=775840726)
## **推荐方案(QQ)** ## **推荐方案(QQ)**

View File

@ -1,6 +1,7 @@
import nonebot.plugin import nonebot.plugin
from liteyuki.utils import init_log from liteyuki.utils import init_log
from liteyuki.utils.base.config import get_config
from liteyuki.utils.base.data_manager import InstalledPlugin, plugin_db from liteyuki.utils.base.data_manager import InstalledPlugin, plugin_db
from liteyuki.utils.base.resource import load_resources from liteyuki.utils.base.resource import load_resources
from liteyuki.utils.message.tools import check_for_package from liteyuki.utils.message.tools import check_for_package
@ -9,13 +10,17 @@ load_resources()
init_log() init_log()
nonebot.plugin.load_plugins("liteyuki/plugins") nonebot.plugin.load_plugins("liteyuki/plugins")
nonebot.plugin.load_plugins("plugins")
# 从数据库读取已安装的插件 # 从数据库读取已安装的插件
installed_plugins: list[InstalledPlugin] = plugin_db.all(InstalledPlugin()) if not get_config("safe_mode", False):
if installed_plugins: # 安全模式下,不加载插件
nonebot.plugin.load_plugins("plugins")
installed_plugins: list[InstalledPlugin] = plugin_db.all(InstalledPlugin())
if installed_plugins:
for installed_plugin in installed_plugins: for installed_plugin in installed_plugins:
if not check_for_package(installed_plugin.module_name): if not check_for_package(installed_plugin.module_name):
nonebot.logger.error(f"{installed_plugin.module_name} not installed, but in loading database. please run `npm fixup` in chat to reinstall it.") nonebot.logger.error(f"{installed_plugin.module_name} not installed, but in loading database. please run `npm fixup` in chat to reinstall it.")
else: else:
nonebot.load_plugin(installed_plugin.module_name) nonebot.load_plugin(installed_plugin.module_name)
else:
nonebot.logger.info("Safe mode is on, no plugin loaded.")

View File

@ -36,12 +36,18 @@ def load_from_yaml(file: str) -> dict:
return conf return conf
def get_config(key: str, *, bot: T_Bot = None, default=None): def get_config(key: str, default=None):
"""获取配置项优先级bot > config > db > yaml""" """获取配置项优先级bot > config > db > yaml"""
try:
bot = nonebot.get_bot()
except:
bot = None
if bot is None: if bot is None:
bot_config = {} bot_config = {}
else: else:
bot_config = bot.config.dict() bot_config = bot.config.dict()
if key in bot_config: if key in bot_config:
return bot_config[key] return bot_config[key]