【问题标题】:path can not be found for discord bot heroku找不到 discord bot heroku 的路径
【发布时间】:2021-10-24 22:31:55
【问题描述】:

我已经为 Heroku 部署了一个 discord.py 重写机器人,并且我已经遵循了所有的部署步骤并且它工作正常。我试图将我的代码调整为具有可更改的前缀,但我需要使用 JSON 文件夹才能使其工作,所以我做了并将其添加到 PATH 并将其添加到我的 GitHub 代表中,一切似乎都正常,它上传并部署了,但是bot 现在无法工作,因为它找不到前缀。错误显然是找不到 JSON 文件的路径。

我的路径获取代码

async def get_prefix(client, message):
    with open('storage\\pp.json', 'r') as f:
        prefixes = json.load(f)

    try:
        prs = prefixes[str(message.guild.id)]
    except KeyError:
        prs = "p."
    return prs

使用“Heroku logs --tail”的 Heroku 错误:

2021-08-24T17:31:59.796711+00:00 app[worker.1]: Ignoring exception in on_message
2021-08-24T17:31:59.796863+00:00 app[worker.1]: Traceback (most recent call last):
2021-08-24T17:31:59.796909+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/discord/client.py", line 343, in _run_event
2021-08-24T17:31:59.796910+00:00 app[worker.1]: await coro(*args, **kwargs)
2021-08-24T17:31:59.796918+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/discord/ext/commands/bot.py", line 979, in on_message
2021-08-24T17:31:59.796919+00:00 app[worker.1]: await self.process_commands(message)
2021-08-24T17:31:59.796928+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/discord/ext/commands/bot.py", line 975, in process_commands
2021-08-24T17:31:59.796928+00:00 app[worker.1]: ctx = await self.get_context(message)
2021-08-24T17:31:59.796937+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/discord/ext/commands/bot.py", line 886, in get_context
2021-08-24T17:31:59.796937+00:00 app[worker.1]: prefix = await self.get_prefix(message)
2021-08-24T17:31:59.796947+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/discord/ext/commands/bot.py", line 831, in get_prefix
2021-08-24T17:31:59.796948+00:00 app[worker.1]: ret = await discord.utils.maybe_coroutine(prefix, self, message)
2021-08-24T17:31:59.796950+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/discord/utils.py", line 343, in maybe_coroutine
2021-08-24T17:31:59.796951+00:00 app[worker.1]: return await value
2021-08-24T17:31:59.796961+00:00 app[worker.1]: File "/app/bot.py", line 97, in get_prefix
2021-08-24T17:31:59.796962+00:00 app[worker.1]: with open('storage\\pp.json', 'r') as f:
2021-08-24T17:31:59.796979+00:00 app[worker.1]: FileNotFoundError: [Errno 2] No such file or directory: 'storage\\pp.json'

路径正确,可以在我的电脑上运行。它在 Heroku 上不起作用? Linux有什么问题吗?

【问题讨论】:

  • 你的机器人的结构是什么样的?您始终必须为机器人提供完整路径。
  • 在 linux 中我们使用正斜杠 (/) 而不是反斜杠 (\`)
  • 为了防止这种情况总是使用os.path.sep 它将选择适当的斜线

标签: python heroku discord discord.py


【解决方案1】:

显然,当您将机器人推送到 Heroku 时,它会将机器人放在 Linux 服务器上,即不理解与 Windows 相同路径的 Linux 机器:

应该是这样的:

async def get_prefix(client, message):
    with open('storage\\pp.json', 'r') as f: #  It should be 'storage//pp.json'
        prefixes = json.load(f)

    try:
        prs = prefixes[str(message.guild.id)]
    except KeyError:
        prs = "p."
    return prs

所以基本上你的路径应该是正斜杠 2 个斜杠

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-12
    • 2020-07-13
    • 2021-03-30
    • 2020-09-27
    • 2019-07-06
    • 2021-10-12
    • 2019-08-21
    • 2022-01-22
    相关资源
    最近更新 更多