Skip to content

Commit

Permalink
Merge pull request #640 from RockChinQ/fix/cfg-command
Browse files Browse the repository at this point in the history
Fix: cfg 命令无法使用
  • Loading branch information
RockChinQ authored Dec 19, 2023
2 parents 3f290b2 + 7386daa commit eb6e5d0
Showing 1 changed file with 17 additions and 27 deletions.
44 changes: 17 additions & 27 deletions pkg/qqbot/cmds/system/cconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,38 @@
def config_operation(cmd, params):
reply = []
import pkg.utils.context
config = pkg.utils.context.get_config()
# config = pkg.utils.context.get_config()
cfg_mgr = pkg.utils.context.get_config_manager()

false = False
true = True

reply_str = ""
if len(params) == 0:
reply = ["[bot]err:请输入!cmd cfg查看使用方法"]
else:
cfg_name = params[0]
if cfg_name == 'all':
reply_str = "[bot]所有配置项:\n\n"
for cfg in dir(config):
for cfg in cfg_mgr.data.keys():
if not cfg.startswith('__') and not cfg == 'logging':
# 根据配置项类型进行格式化,如果是字典则转换为json并格式化
if isinstance(getattr(config, cfg), str):
reply_str += "{}: \"{}\"\n".format(cfg, getattr(config, cfg))
elif isinstance(getattr(config, cfg), dict):
if isinstance(cfg_mgr.data[cfg], str):
reply_str += "{}: \"{}\"\n".format(cfg, cfg_mgr.data[cfg])
elif isinstance(cfg_mgr.data[cfg], dict):
# 不进行unicode转义,并格式化
reply_str += "{}: {}\n".format(cfg,
json.dumps(getattr(config, cfg),
json.dumps(cfg_mgr.data[cfg],
ensure_ascii=False, indent=4))
else:
reply_str += "{}: {}\n".format(cfg, getattr(config, cfg))
reply_str += "{}: {}\n".format(cfg, cfg_mgr.data[cfg])
reply = [reply_str]
else:
cfg_entry_path = cfg_name.split('.')

try:
if len(params) == 1:
cfg_entry = getattr(config, cfg_entry_path[0])
if len(params) == 1: # 未指定配置值,返回配置项值
cfg_entry = cfg_mgr.data[cfg_entry_path[0]]
if len(cfg_entry_path) > 1:
for i in range(1, len(cfg_entry_path)):
cfg_entry = cfg_entry[cfg_entry_path[i]]
Expand All @@ -48,23 +53,10 @@ def config_operation(cmd, params):
reply = [reply_str]
else:
cfg_value = " ".join(params[1:])
# 类型转换,如果是json则转换为字典
# if cfg_value == 'true':
# cfg_value = True
# elif cfg_value == 'false':
# cfg_value = False
# elif cfg_value.isdigit():
# cfg_value = int(cfg_value)
# elif cfg_value.startswith('{') and cfg_value.endswith('}'):
# cfg_value = json.loads(cfg_value)
# else:
# try:
# cfg_value = float(cfg_value)
# except ValueError:
# pass

cfg_value = eval(cfg_value)

cfg_entry = getattr(config, cfg_entry_path[0])
cfg_entry = cfg_mgr.data[cfg_entry_path[0]]
if len(cfg_entry_path) > 1:
for i in range(1, len(cfg_entry_path) - 1):
cfg_entry = cfg_entry[cfg_entry_path[i]]
Expand All @@ -74,14 +66,12 @@ def config_operation(cmd, params):
else:
reply = ["[bot]err:配置项{}类型不匹配".format(cfg_name)]
else:
setattr(config, cfg_entry_path[0], cfg_value)
cfg_mgr.data[cfg_entry_path[0]] = cfg_value
reply = ["[bot]配置项{}修改成功".format(cfg_name)]
except AttributeError:
reply = ["[bot]err:未找到配置项 {}".format(cfg_name)]
except ValueError:
reply = ["[bot]err:未找到配置项 {}".format(cfg_name)]
# else:
# reply = ["[bot]err:未找到配置项 {}".format(cfg_name)]

return reply

Expand Down

0 comments on commit eb6e5d0

Please sign in to comment.