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

Python Discord Bot报错TypeError:预期token为str却收到NoneType的解决方法

解决Discord Bot报错:TypeError: expected token to be a str, received NoneType instead

这个错误的核心原因是你通过os.getenv('TOKEN')获取机器人令牌时,拿到的是None——也就是说系统里根本没找到名为TOKEN的环境变量,或者变量名写错了。下面是几种可行的修复方案:

方案1:临时设置环境变量(Windows命令行)

  • 打开命令提示符,切换到你的项目目录
  • 输入命令:set TOKEN=你的机器人令牌(把你的机器人令牌替换成你从Discord开发者后台复制的真实令牌)
  • 然后正常运行你的Python脚本

方案2:永久设置Windows环境变量

  • 右键「此电脑」→ 属性 → 高级系统设置 → 环境变量
  • 在「用户变量」区域点击「新建」,变量名填TOKEN,变量值填你的机器人令牌
  • 保存后重启命令提示符,再运行脚本

方案3:临时直接写令牌(仅用于测试,不推荐上线)

  • 把代码最后一行的client.run(os.getenv('TOKEN'))改成:
client.run('你的机器人令牌')

注意:上线前一定要改回环境变量的方式,避免令牌泄露。

方案4:用.env文件管理令牌(推荐长期项目使用)

  • 先安装依赖库:pip install python-dotenv
  • 在项目根目录创建.env文件,内容只写一行:
TOKEN=你的机器人令牌
  • 修改你的代码,在开头添加两行:
from dotenv import load_dotenv
load_dotenv()

这样os.getenv('TOKEN')就能正确读取到.env里的令牌了。

额外注意事项

  • 确认复制的机器人令牌没有多余的空格或换行,令牌是一串无格式的字符串
  • 如果用.env文件,记得把.env加入.gitignore文件,防止提交到代码仓库泄露令牌

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:05:32