Discord Bot 1.7.3运行报错:AttributeError: 'NoneType'无strip属性
问题解决:AttributeError: 'NoneType' object has no attribute 'strip'
错误根源
当前报错核心是os.environ.get('DISCORD-TOKEN')返回了None——你的系统环境变量里没正确设置DISCORD-TOKEN这个变量。discord.py尝试调用token.strip()时,None类型没有strip方法,因此抛出错误。
解决方案
1. 验证并设置环境变量
- Windows系统:
- 打开命令提示符,输入
echo %DISCORD-TOKEN%,如果输出为空或不是你的机器人令牌,说明环境变量未设置。 - 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,在用户/系统变量中添加
DISCORD-TOKEN,值为你的机器人令牌。 - 重启终端或IDE,确保环境变量生效。
- 打开命令提示符,输入
- macOS/Linux系统:
- 打开终端,输入
echo $DISCORD-TOKEN,检查输出是否为有效令牌。 - 临时生效:运行脚本前执行
export DISCORD-TOKEN="你的机器人令牌"。 - 永久生效:将上述
export命令添加到~/.bashrc/~/.zshrc等shell配置文件,再执行source ~/.bashrc(对应配置文件)。
- 打开终端,输入
2. 临时测试(仅用于验证逻辑,禁止生产环境使用)
如果想快速确认代码逻辑正常,可以直接替换令牌字符串(注意不要提交到公共仓库):
client.run("你的Discord机器人令牌")
确认运行正常后,再换回环境变量方式。
3. 使用.env文件管理密钥(推荐开发环境)
- 安装依赖包:
pip install python-dotenv - 在项目根目录创建
.env文件,写入:DISCORD-TOKEN=你的机器人令牌 OPENAI-KEY=你的OpenAI密钥 - 在代码开头添加加载逻辑:
import discord import asyncio import openai import os from dotenv import load_dotenv # 加载.env中的环境变量 load_dotenv() openai.api_key = os.environ.get('OPENAI-KEY') # ... 其余代码不变
额外说明
你使用的discord.py 1.7.3版本本身支持client.run(os.environ.get('DISCORD-TOKEN'))写法,当前报错和版本无关,完全是环境变量未正确加载导致的。
内容的提问来源于stack exchange,提问作者MARIUCHINAS
相关产品推荐
相关产品推荐

