feat: 一大堆更新,修了一堆bug加了新功能
Some checks failed
Auto Deploy NeoBot (FRP + SSH 密码登录) / deploy-to-server (push) Has been cancelled
Some checks failed
Auto Deploy NeoBot (FRP + SSH 密码登录) / deploy-to-server (push) Has been cancelled
1. 新增反馈插件、复读插件、戳一戳插件 2. 修复了配置、线程安全、SQL校验等多处bug 3. 重构插件加载系统,支持验证插件+热加载 4. 修复大量测试用例问题,修复了76个测试挂逼的问题 5. 调整了broadcast插件的发送间隔 6. 优化了性能统计的函数命名逻辑 7. 修复了furry插件的注释和函数名错误 8. 重构了输入校验的逻辑顺序 9. 配置文件新增了默认值处理
This commit is contained in:
@@ -2,38 +2,76 @@
|
||||
NEO Bot Plugins Package
|
||||
|
||||
插件模块,包含所有业务逻辑插件。
|
||||
支持固定验证插件列表 + 热加载模式:
|
||||
|
||||
- VERIFIED_PLUGINS: 经过验证的固定插件列表,启动时优先加载
|
||||
- Hot-loading: 自动发现并加载目录中未在验证列表中的插件
|
||||
"""
|
||||
|
||||
from . import admin
|
||||
from . import auto_approve
|
||||
from . import bot_status
|
||||
from . import broadcast
|
||||
from . import code_py
|
||||
from . import echo
|
||||
from . import furry
|
||||
from . import furry_assistant
|
||||
from . import github_parser
|
||||
from . import group_welcome
|
||||
from . import jrcd
|
||||
from . import knowledge_base
|
||||
from . import mirror_avatar
|
||||
from . import thpic
|
||||
from . import weather
|
||||
import importlib
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from neobot.core.utils.logger import logger
|
||||
|
||||
__all__ = [
|
||||
# 固定验证插件列表
|
||||
# 这些插件经过验证和测试,会在启动时被优先加载
|
||||
# 如需添加新插件,先加入此列表进行验证
|
||||
VERIFIED_PLUGINS = (
|
||||
"admin",
|
||||
"auto_approve",
|
||||
"bot_status",
|
||||
"broadcast",
|
||||
"code_py",
|
||||
"echo",
|
||||
"feedback",
|
||||
"furry",
|
||||
"furry_assistant",
|
||||
"github_parser",
|
||||
"group_welcome",
|
||||
"jrcd",
|
||||
"knowledge_base",
|
||||
"mirror_avatar",
|
||||
"poke",
|
||||
"repeat",
|
||||
"thpic",
|
||||
"weather",
|
||||
]
|
||||
)
|
||||
|
||||
__all__ = []
|
||||
|
||||
|
||||
def _load_verified_plugins():
|
||||
"""加载固定验证插件列表"""
|
||||
for plugin_name in VERIFIED_PLUGINS:
|
||||
full_name = f"{__package__}.{plugin_name}"
|
||||
try:
|
||||
importlib.import_module(full_name)
|
||||
__all__.append(plugin_name)
|
||||
logger.debug(f"[插件加载] 验证插件已加载: {plugin_name}")
|
||||
except Exception as e:
|
||||
logger.error(f"[插件加载] 加载验证插件 '{plugin_name}' 失败: {e}")
|
||||
|
||||
|
||||
def _hot_load_plugins():
|
||||
"""热加载:自动发现并加载目录中未在验证列表中的插件"""
|
||||
current_dir = Path(__file__).parent
|
||||
|
||||
import pkgutil
|
||||
for _, module_name, is_pkg in pkgutil.iter_modules([str(current_dir)]):
|
||||
if module_name.startswith("_"):
|
||||
continue
|
||||
if module_name in VERIFIED_PLUGINS:
|
||||
continue
|
||||
if module_name in __all__:
|
||||
continue
|
||||
|
||||
full_name = f"{__package__}.{module_name}"
|
||||
try:
|
||||
importlib.import_module(full_name)
|
||||
__all__.append(module_name)
|
||||
logger.info(f"[插件加载] 热加载插件: {module_name}")
|
||||
except Exception as e:
|
||||
logger.error(f"[插件加载] 热加载插件 '{module_name}' 失败: {e}")
|
||||
|
||||
|
||||
# 先加载验证插件,再热加载其余插件
|
||||
_load_verified_plugins()
|
||||
_hot_load_plugins()
|
||||
|
||||
Reference in New Issue
Block a user