【发布时间】: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