问题描述
SimpleOP 的配置文件中提供了 enabled 选项,看起来它应该用于启用/禁用插件。
但是目前当我将:
写入配置后,插件虽然会输出“插件已禁用”的日志,但仍然会继续注册 !!op 和 !!restart 命令,命令依然可以正常执行。
这会让管理员误以为插件已经被关闭,但实际上并没有。
复现步骤
- 安装
SimpleOP
- 在配置文件中设置:
- 重载或重启插件
- 执行:
或:
实际结果
命令仍然存在,并且仍然可以执行。
预期结果
当 enabled 为 false 时,插件应当真正禁用,至少不应注册 !!op 和 !!restart 命令,或者在执行时直接拒绝。
相关代码
simple_op/__init__.py
def on_load(server: PluginServerInterface, prev):
try:
global restart_lock
assert type(prev.restart_lock) is type(restart_lock)
restart_lock = prev.restart_lock
except (AttributeError, AssertionError):
pass
global config
config = server.load_config_simple(target_class=Config)
if not config.enabled:
server.logger.info('{} is disabled by config'.format(PLUGIN_METADATA.name))
server.register_help_message('!!op', tr('help.op'), permission=config.permissions.op)
server.register_help_message('!!restart', tr('help.restart', config.restart_delay), permission=config.permissions.restart)
server.register_command(Literal('!!op').runs(give_op).precondition(Requirements.has_permission(config.permissions.op)))
server.register_command(Literal('!!restart').runs(restart).precondition(Requirements.has_permission(config.permissions.restart)))
当前逻辑中:
enabled 为 false 时仅打印日志
- 但之后仍然继续执行
register_command(...)
建议修复
在 on_load() 中检测到 enabled == false 时直接返回,不再注册命令;或者在命令处理函数中增加 enabled 检查。
问题描述
SimpleOP的配置文件中提供了enabled选项,看起来它应该用于启用/禁用插件。但是目前当我将:
写入配置后,插件虽然会输出“插件已禁用”的日志,但仍然会继续注册
!!op和!!restart命令,命令依然可以正常执行。这会让管理员误以为插件已经被关闭,但实际上并没有。
复现步骤
SimpleOP或:
实际结果
命令仍然存在,并且仍然可以执行。
预期结果
当
enabled为false时,插件应当真正禁用,至少不应注册!!op和!!restart命令,或者在执行时直接拒绝。相关代码
simple_op/__init__.py当前逻辑中:
enabled为false时仅打印日志register_command(...)建议修复
在
on_load()中检测到enabled == false时直接返回,不再注册命令;或者在命令处理函数中增加enabled检查。