在 cogs 目录的子文件夹中加载命令

时间:2021-06-03 20:13:55

标签: python discord discord.py

目前我正在尝试为我的不和谐机器人清理我的文件夹结构,并在我的 cogs/commands 目录中有不同的子文件夹。每个子文件夹是不同的命令类别。

但是,我很难加载这些齿轮。我收到以下错误:

[nodemon] starting `python main.py`
cogs\commands
1 - cogs\commands\general
2 - cogs\commands\general\help.py
Traceback (most recent call last):
  File "F:\Discord Pandemic\main.py", line 372, in <module>
    client.load_extension(f"cogs.{py_file}")
  File "C:\Users\myalt\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\bot.py", line 676, in load_extension
    raise errors.ExtensionNotFound(name)
discord.ext.commands.errors.ExtensionNotFound: Extension 'cogs.commands\\general\\help' could not be loaded.

即使文件路径正确?

    print(py_file)
    if py_file.endswith('.py'):
        py_file = py_file[5:-3]
        client.load_extension(f"{py_file}")
    else:
        for py_file in glob.glob(f"{py_file}/*"):
            print(f"1 - {py_file}")
            for py_file in glob.glob(f"{py_file}/*"):
                print(f"2 - {py_file}")
                if py_file.endswith('.py'):
                    py_file = py_file[5:-3]
                    client.load_extension(f"{py_file}")
                    print(f"Loaded {py_file}")
                    print(f"lol - {py_file}")

Folder structure

1 个答案:

答案 0 :(得分:0)

    for py_file in glob.glob(f"{py_file}/*"):
        for py_file in glob.glob(f"{py_file}/*"):
            if py_file.endswith('.py'):
                py_file = py_file[5:-3]
                print(f"Loaded " + py_file.replace('\\', '.'))
                client.load_extension("cogs." + py_file.replace('\\', '.'))

必须用 \\ 替换 .,因为齿轮需要 . 文件路径

相关问题