【问题标题】:Loading commands in subfolders of the cogs directory在 cogs 目录的子文件夹中加载命令
【发布时间】:2021-08-21 23:17:25
【问题描述】:

目前我正在尝试为我的不和谐机器人清理我的文件夹结构,并在我的 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}")

【问题讨论】:

  • 你正在使用反斜杠加载扩展:cogs.commands\\general\\help,它应该是一个点.
  • 哦,对了,我明白了。我应该如何用. 替换\\
  • 你可以使用py_file = py_file.replace("\\", ".")或者干脆不添加`\\`
  • 谢谢,刚试过.replace! for py_file in glob.glob("cogs/*"): if py_file.endswith('.py'): py_file = py_file[5:-3] client.load_extension(f"cogs.{py_file}") else: 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('\\', '.')) 我认为效果很好 :) 谢谢

标签: python discord discord.py


【解决方案1】:
    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('\\', '.'))

必须将 \\ 替换为 .,因为 cogs 需要 . 文件路径

【讨论】:

    猜你喜欢
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 2015-10-26
    • 2021-07-24
    • 2014-06-13
    • 2013-03-12
    相关资源
    最近更新 更多