找不到 discord bot heroku 的路径
path can not be found for discord bot heroku
我已经向 Heroku 部署了一个 discord.py 重写机器人,并且我遵循了所有部署步骤并且成功了。我试图将我的代码调整为具有可更改的前缀,但我需要使用 JSON 文件夹才能正常工作,所以我这样做并将其添加到 PATH 并将其添加到我的 GitHub 代表并且一切似乎工作,它已上传并部署,但机器人现在无法工作,因为它找不到前缀。错误显然是找不到 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有问题吗?
所以很明显,当你将机器人推送到 Heroku 时,它会将机器人放在 Linux 服务器上,也就是 Linux 机器,它不理解与 windows 相同的路径:
所以应该是:
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 个斜杠
我已经向 Heroku 部署了一个 discord.py 重写机器人,并且我遵循了所有部署步骤并且成功了。我试图将我的代码调整为具有可更改的前缀,但我需要使用 JSON 文件夹才能正常工作,所以我这样做并将其添加到 PATH 并将其添加到我的 GitHub 代表并且一切似乎工作,它已上传并部署,但机器人现在无法工作,因为它找不到前缀。错误显然是找不到 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有问题吗?
所以很明显,当你将机器人推送到 Heroku 时,它会将机器人放在 Linux 服务器上,也就是 Linux 机器,它不理解与 windows 相同的路径:
所以应该是:
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 个斜杠