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

discord.py运行报错RuntimeError: Event loop is closed环境变量问题

问题根因

你遇到的AttributeError: 'NoneType' object has no attribute 'strip'报错核心是TOKEN变量为None,说明load_dotenv()没有成功加载到.env文件中的BOT_TOKEN值。后续的RuntimeError: Event loop is closed是主程序崩溃后的衍生异常,无需单独处理,解决变量加载问题后会自动消失。

解决方案

按以下步骤逐一排查修复即可:

  • 修复.env文件加载路径
    你当前代码中load_dotenv('.env')是基于脚本执行时的工作目录查找文件,若你执行脚本的目录和脚本所在目录不一致,就会找不到.env文件。建议修改为基于脚本绝对路径查找:

    # 替换原有的load_dotenv('.env')行
    from pathlib import Path
    load_dotenv(Path(__file__).parent / '.env')
    

    这段代码会固定读取和当前脚本同目录下的.env文件,不受执行目录影响。

  • 增加变量读取校验
    读取TOKEN后增加校验逻辑,提前定位加载失败问题:

    TOKEN = os.environ.get('BOT_TOKEN')
    if not TOKEN:
        raise ValueError("BOT_TOKEN读取失败,请检查.env文件配置")
    
  • 排查.env文件本身问题

    • 确认文件后缀正确:Windows默认隐藏已知文件后缀,避免实际文件名为.env.txt而不是.env
    • 确认文件内容格式:BOT_TOKEN=你的实际token,行首不要有空格,等号两侧不要加多余空格,token值不要加多余的引号(新版python-dotenv虽支持引号,但最简格式可避免格式兼容问题)
    • 确认文件编码为UTF-8,不要使用GBK或带BOM的UTF-8编码
  • 临时测试验证
    在load_dotenv执行后加入print(os.environ.get('BOT_TOKEN'))运行脚本,若输出你的token说明加载成功,删除测试代码即可正常运行;若输出为None,按上述步骤重新排查路径和文件配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:36:01