You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.py+Heroku部署问题:本地正常的TXT读取命令云端失效

解决Heroku上Discord机器人无法读取.txt文件的问题

看起来你遇到的核心问题是本地运行正常,但部署到Heroku后找不到指定的.txt文件,这大概率是路径逻辑或文件上传环节出了问题,我给你梳理几个排查和解决方向:

1. 先确认文件是否已同步到GitHub仓库

Heroku是从你的GitHub分支拉取代码的,如果cogs/chelp/目录下的.txt文件没被提交到GitHub,Heroku自然找不到它们:

  • 检查本地的.gitignore文件,有没有把.txt后缀或者cogs/chelp/目录加入了忽略规则?如果有,需要移除对应规则后重新提交文件。
  • 直接登录你的GitHub仓库,手动查看cogs/chelp/目录下是否存在你需要的那些.txt文件。

2. 修正文件路径的写法(关键解决步骤)

本地运行时,你的工作目录可能和机器人脚本所在目录完全一致,但Heroku的工作目录结构和本地有差异,直接用相对路径f'cogs/chelp/{name}.txt'会导致路径定位错误。推荐用os.path模块基于脚本自身位置构建绝对路径,这样不管部署到哪个环境都能精准找到文件:

修改你的命令代码如下:

import os
from discord.ext import commands

async def chelp(self, ctx, name = 'help'):
    name = name.lower()
    # 获取当前命令所在脚本文件的绝对路径
    current_script_dir = os.path.dirname(os.path.abspath(__file__))
    # 拼接出目标txt文件的完整路径(假设chelp目录和当前脚本在同一层级)
    file_path = os.path.join(current_script_dir, 'chelp', f'{name}.txt')
    # 用with语句打开文件,自动处理关闭操作,比直接open更安全
    with open(file_path, 'r', encoding='utf-8') as file:
        message = file.read()
    await ctx.send(message.format(ctx.author.name))
    await ctx.message.delete()

3. 额外提醒:日志里的扩展加载失败

虽然这不是当前文件读取问题的直接原因,但日志里显示cogs.ErrorHandler和cogs.CustomCommands加载失败,建议后续也检查下这些扩展的路径或代码问题,避免影响机器人的其他功能。

内容的提问来源于stack exchange,提问作者sebkuip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:27:59