Files
NeoBot/src/neobot/plugins/__init__.py
K2CRO4 3a52652b4a
Some checks are pending
Auto Deploy NeoBot (FRP + SSH 密码登录) / deploy-to-server (push) Waiting to run
feat(plugins,models): 加了今日老婆插件还有群成员信息字段
1. 新增daily_wife插件,群里每天随机配对群友
2. 给GroupMemberInfo加了QQ等级和是否机器人的字段
3. 改了群成员API的缓存和字段过滤逻辑
4. 更新了反馈数据和更新日志页面
2026-05-15 13:52:11 +08:00

79 lines
2.1 KiB
Python

"""
NEO Bot Plugins Package
插件模块,包含所有业务逻辑插件。
支持固定验证插件列表 + 热加载模式:
- VERIFIED_PLUGINS: 经过验证的固定插件列表,启动时优先加载
- Hot-loading: 自动发现并加载目录中未在验证列表中的插件
"""
import importlib
import sys
from pathlib import Path
from neobot.core.utils.logger import logger
# 固定验证插件列表
# 这些插件经过验证和测试,会在启动时被优先加载
# 如需添加新插件,先加入此列表进行验证
VERIFIED_PLUGINS = (
"admin",
"auto_approve",
"bot_status",
"broadcast",
"code_py",
"daily_wife",
"echo",
"feedback",
"furry",
"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()